2016-01-19 86 views
0

BigQuery不支持相關的反半連接。如果上面的陳述是錯誤的,我現在正在努力解決一個會變得更容易的問題。如何使用大查詢複製相關子查詢

我有兩個表。

  • 一個表包含所有可能的標識符的重複整數字段(ProfileGroupModel.sources)
  • 第二個包含的已經從所述「可能」列表中刪除一個帳戶值的重複整數字段(PRO .ignoredSourceList)

如果大查詢沒有支持這種類型的查詢,這些都將導致我試圖得到:

SELECT 
    pro.pid, 
    prg.sources, 
FROM [datastore.PRO] AS pro 
JOIN EACH FLATTEN([datastore.ProfileGroupModel], sources) AS prg ON prg.gid = pro.gid 
WHERE prg.sources NOT IN (
    SELECT ignoredSourceList 
    FROM FLATTEN([datastore.PRO], ignoredSourceList) as proInner 
    WHERE proInner.pid = pro.pid 
) 

不任何人都有關於如何在BigQuery領域解決這個問題的指針?

回答

1

拍攝一點在黑暗中像下面背後例如上面確切的邏輯,但一些方面應該工作

SELECT 
    pro.pid AS pid, 
    prg.sources AS source 
FROM [datastore.PRO] AS pro 
JOIN EACH FLATTEN([datastore.ProfileGroupModel], sources) AS prg 
    ON prg.gid = pro.gid 
LEFT JOIN EACH FLATTEN([datastore.PRO], ignoredSourceList) AS proInner 
    ON proInner.pid = pro.pid AND prg.sources = proInner.ignoredSourceList 
WHERE proInner.ignoredSourceList IS NULL 
    AND proInner.pid IS NULL 
+0

是啊,這正是我想要的。謝謝米哈伊爾。有趣的Chrome擴展你們建造的。現在給它一個嘗試。 – Jesse