BigQuery:数组索引 1 超出范围(溢出)[在不指定列名称的情况下查找所有列的不同计数)

问题描述 投票:0回答:1

在 Bigquery 上,我有一个包含许多列的表。我想创建一个新表,显示所有列的所有不同值的计数。

我正在使用以下代码:

SELECT key AS column_name,
COUNT(DISTINCT val) AS number_of_options,
ARRAY_AGG(DISTINCT val) AS distinct_options
FROM (
  SELECT TRIM(x[0], '"') AS key, 
  TRIM(x[1], '"') AS val
  FROM t,
  UNNEST(SPLIT(TRIM(TO_JSON_STRING(t), '{}'), ',"')) kv,   
  UNNEST([STRUCT(SPLIT(kv, '":') AS x)])
  )
GROUP BY key  

上面的代码使我不必指定所有列名称或循环它们。但这会引发错误“数组索引 1 超出范围(溢出)”。如果不引用 x[1] (其中包含每个行列的值),代码就可以正常工作。我尝试添加“where x[1] is not null”等,但每次代码都会抛出上述错误。

将不胜感激任何帮助。如果需要可以详细说明。

sql google-bigquery distinct-values
1个回答
0
投票

使用 x[safe_offset(1)] 有效!

© www.soinside.com 2019 - 2024. All rights reserved.