可能な場合、結合を使用した SQL クエリがデータソースにプッシュダウンされ、データソースがクエリを評価します。結合をデータソースにプッシュするには、いくつかの条件を満たす必要があります。
- 結合のテーブルは同じデータ・ソースでなければなりません。
- データ・ソース・ドライバーは結合をサポートしている必要があります。
次の例は、同じデータ・ソースからの2つの結合を示しています:
SELECT soh.customerid, sum(soh.subtotal) AS soh_subtotalFROM dwh.SalesOrderDetail sod JOIN dwh.SalesOrderHeader soh ON sod.salesorderid = soh.altsalesorderid GROUP BY soh.customerid;;Query Plansを表示すると、クエリ全体がデータソースDWHにプッシュダウンされる様子がわかります:
SELECT g_1.customerid, SUM(g_1.subtotal) FROM dwh.SalesOrderDetail AS g_0, dwh.SalesOrderHeader AS g_1 WHERE g_0.salesorderid = convert(g_1.altsalesorderid, biginteger) GROUP BY g_1.customeridビューやテーブルがマテリアライズされる特殊なケースがあります。以下の例では、ビューが2つの異なるデータソースのテーブルを結合しています。通常、これは連携クエリになります。しかし、ビューが Materialization されているため、クエリ全体が Analytical Storage にプッシュダウンされます。背景が薄緑色になっているのは、クエリがAnalytical Storageにプッシュダウンされていることを示しています:
CREATE VIEW "views.SalesOrdersPlusHeaders_oracle_mssql_mat" AS SELECT *FROM "oracle.SalesOrderHeader" INNER JOIN "mssql_local_data.SalesOrderDetail" ON "SalesOrderHeader.salesorderid" = "SalesOrderDetail.salesorderid";;SELECT "SALESORDERID" FROM "views.SalesOrdersPlusHeaders_oracle_mssql_mat" LIMIT 500;;SELECT g_0.salesorderid AS c_0 FROM dwh.mat_table_8_st2 AS g_0 LIMIT 500この動作はOPTION $PREFER_DWH NEVERを使ってオーバーライドできることに注意してください。以下の例では、元のデータソースから読み込むことをQuery Plannerに強制するオプションを使用し、連携問い合わせを作成しています(より詳細な説明はOPTION Clauseを参照してください):
SELECT "SALESORDERID" FROM "views.SalesOrdersPlusHeaders_oracle_mssql_mat" OPTION $PREFER_DWH NEVER;;


