これは、ここのドキュメントに従って可能になりました:
多くの場合、データは多くの場所に散在しています。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;