如何用大查询复制相关子查询
How to replicate a correlated sub query with big query
BigQuery 不支持关联反半连接。我目前正在努力解决一个问题,如果上述陈述是错误的,这个问题会变得容易得多。
我有两个 table。
- 一个 table 包含所有可能标识符的重复整数字段 (ProfileGroupModel.sources)
- 第二个包含已从帐户 (PRO.ignoredSourceList)
的 "possible" 列表中删除的值的重复整数字段
如果 Big Query 确实支持这种类型的查询,这些是我试图获得的结果:
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 领域内的有效解决方案有任何指示?
根据上面示例背后的确切逻辑,在黑暗中拍摄了一点,但像下面这样的东西应该可以工作
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
BigQuery 不支持关联反半连接。我目前正在努力解决一个问题,如果上述陈述是错误的,这个问题会变得容易得多。
我有两个 table。
- 一个 table 包含所有可能标识符的重复整数字段 (ProfileGroupModel.sources)
- 第二个包含已从帐户 (PRO.ignoredSourceList) 的 "possible" 列表中删除的值的重复整数字段
如果 Big Query 确实支持这种类型的查询,这些是我试图获得的结果:
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 领域内的有效解决方案有任何指示?
根据上面示例背后的确切逻辑,在黑暗中拍摄了一点,但像下面这样的东西应该可以工作
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