2017-10-05 142 views
0

我發現使用WITH塊來分解查詢中的邏輯很有幫助。我是否認爲我無法在ARRAY表達式中的嵌套字段上執行此操作?我可以分成嵌套查詢 - 這是足夠的但不是理想的。WITH&UNNEST in BigQuery

例如,這個工程:

SELECT 
    repository.url, 
    ARRAY(
    SELECT 
    action 
    FROM (
    SELECT 
     action 
    FROM 
     UNNEST(payload.pages))) action 
FROM 
    `bigquery-public-data.samples.github_nested` 

...但是這並不:

SELECT 
    repository.url, 
    ARRAY(
    WITH 
    p AS (
    SELECT 
     action 
    FROM 
     UNNEST(payload.pages)) 
    SELECT 
    action 
    FROM 
    p) action 
FROM 
    `bigquery-public-data.samples.github_nested` 

... Error: Unrecognized name: payload at [9:14]。可能是因爲表格尚未定義爲WITH塊?

是否有另一種方法可以做到這一點?

編輯:這是玩具查詢來說明這個問題,不能代表我們正在運行

回答

1

我看到的只是簡化唯一的選擇/優化您的查詢低於實際查詢 - 所以不會有需要與內部的ARRAY

#standardSQL 
SELECT 
    repository.url, 
    ARRAY(SELECT action FROM UNNEST(payload.pages)) action 
FROM `bigquery-public-data.samples.github_nested` 
+0

感謝您試用。這是一個玩具查詢僅用於顯示目的;實際查詢更復雜 – Maximilian

+0

我的答案是 - 您不能在ARRAY或任何其他表達式中使用WITH。我只是試圖告訴你方向,以防萬一你沒有意識到你的查詢被過度勞動了一點 –

+0

我感謝你的努力! – Maximilian