4

bigqueryに大量のデータがあり、クラウドSQLにある小さなデータセットに結合することで強化される分析を実行したいと思います。検索しましたが、2つの間のSQLベースのブリッジが見つかりません。私はこのようなことを考えていました:

SELECT
  bqdb.table as a,
  csdb.table as b,
  csdb.table as c
FROM bigquery:project:bqdb.table as t1,cloudsql:project:csdb.table as t2
JOIN t1 ON t1.a=t2.b
WHERE a='foo'
GROUP BY a,b
ORDER BY c
4

2 に答える 2

1

現在、CloudSQLとGoogleBigQueryのデータ間の直接的な橋渡しはありません。このようなクエリを実行するには、mysqldumpツールを使用してCloud SQLテーブルデータをCSV形式でエクスポートしてから、このデータを新しいテーブルとしてBigQueryにインポートする必要があります。

于 2012-11-25T20:39:02.940 に答える
1

これは、ここのドキュメントに従って可能になりました:

多くの場合、データは多くの場所に散在しています。Cloud SQLにsalesテーブルを保存しながら、BigQueryにcustomerテーブルを保存し、1つのクエリで2つのテーブルを結合したい場合があります。

BigQuery Cloud SQLフェデレーションを使用すると、BigQueryは、データをコピーまたは移動することなく、CloudSQLに存在するデータをリアルタイムでクエリできます。Cloud SQLでMySQL(第2世代)とPostgreSQLの両方のインスタンスをサポートします。

最初の1回限りのセットアップの後、新しいSQL関数を使用してクエリを作成できますEXTERNAL_QUERY()

..。

概要で説明したレポートに各顧客の最初の注文日を含める必要があるとします。このデータは現在BigQueryにはありませんが、CloudSQLの運用中のPostgreSQLデータベースで利用できます。次のフェデレーションクエリの例は、これを実現します。

SELECT c.customer_id, c.name, SUM(t.amount) AS total_revenue,
rq.first_order_date
FROM customers AS c
INNER JOIN transaction_fact AS t ON c.customer_id = t.customer_id
LEFT OUTER JOIN EXTERNAL_QUERY(
  'connection_id',
  '''SELECT customer_id, MIN(order_date) AS first_order_date
  FROM orders
  GROUP BY customer_id''') AS rq ON rq.customer_id = c.customer_id
GROUP BY c.customer_id, c.name, rq.first_order_date;
于 2020-07-15T15:17:59.263 に答える