首页 > 解决方案 > 如何编写查询来引用两个键和两个值?

问题描述

我正在尝试在 Google BigQuery 中编写一个查询,该查询会提取两个键和两个值。查询应该是:从一个表中计算不同的伪用户 ID,其中 event_params.key = 结果和 event_params.key = 确认号(并且不为空),并且 event_params.value.string_value = 成功。这已经被取消嵌套。我是 SQL 的超级新手,所以请忽略任何答案。

SELECT
*
FROM
  `table_name`,
  UNNEST(event_params) AS params
WHERE
  (stream_id = '1168190076'
    OR stream_id = '1168201031')
  AND params.key = 'result'
  AND params.value.string_value IN ('success',
    'SUCCESS')
    AND params.key = 'confirmationNumber' NOT NULL

我不断收到错误,当我没有收到错误时,我的数字会大幅下降!我不确定下一步该去哪里。

标签: sqlgoogle-bigquery

解决方案


以下是 BigQuery 标准 SQL

#standardSQL
SELECT *
FROM `project.dataset.table`
WHERE stream_id IN ('1168190076', '1168201031') 
AND 2 = (
  SELECT COUNT(1)
  FROM UNNEST(event_params) param
  WHERE (
    param.key = 'result' AND 
    LOWER(param.value.string_value) = 'success'
  ) OR (
    param.key = 'confirmationNumber' AND 
    NOT param.value.string_value IS NULL
  )
)

推荐阅读