Google bigquery BigQuery按数组项筛选行

Google bigquery BigQuery按数组项筛选行,google-bigquery,Google Bigquery,我需要创建从条目中的数组值派生的列。下例表有4个条目,称为“会话”,每个会话都有多个访问过的应用程序值(onlineshop或nativeapp)。在派生列中,如果在该会话中至少有一个“nativeapp”条目,则我希望有“1”值。在第二列中,如果所有条目都是“nativeapp”,则需要使用“1”。否则该值应为“0” 我的尝试是做一个子查询“选择…”来过滤条目。。。然而,我不需要让子查询引用它的条目,但实际上,如果所有表中的任何条目都适合子查询,那么这只是一个完整的“1” SELECT *,

我需要创建从条目中的数组值派生的列。下例表有4个条目,称为“会话”,每个会话都有多个访问过的应用程序值(onlineshop或nativeapp)。在派生列中,如果在该会话中至少有一个“nativeapp”条目,则我希望有“1”值。在第二列中,如果所有条目都是“nativeapp”,则需要使用“1”。否则该值应为“0”

我的尝试是做一个子查询“选择…”来过滤条目。。。然而,我不需要让子查询引用它的条目,但实际上,如果所有表中的任何条目都适合子查询,那么这只是一个完整的“1”

SELECT *, (SELECT MAX(IF(appEntry LIKE "%nativeapp%", 1, 0 )) FROM TESTTABLE, UNNEST(application) as appEntry) as isNativeSession FROM TESTTABLE 
因此,结果应该是:


下面是BigQuery标准SQL

#standardSQL
SELECT *, 
  (SELECT SIGN(COUNT(1)) FROM UNNEST(application) value WHERE value = 'nativeapp') AS isNativeSession,
  (SELECT CAST(STRING_AGG(DISTINCT value) = 'nativeapp' AS INT64) FROM UNNEST(application) value) AS isNativeOnlySession 
FROM TESTTABLE  
结果

#standardSQL
SELECT *, 
  (SELECT SIGN(COUNT(1)) FROM UNNEST(application) value WHERE value = 'nativeapp') AS isNativeSession,
  (SELECT CAST(STRING_AGG(DISTINCT value) = 'nativeapp' AS INT64) FROM UNNEST(application) value) AS isNativeOnlySession 
FROM TESTTABLE