csv 将BigQuery表中具有“REPEATED”模式的INTEGER AND STRING数据类型值转换为逗号分隔的列表

pb3skfrl  于 2023-03-21  发布在  其他
关注(0)|答案(1)|浏览(140)

我见过的大多数示例都是RECORD类型,但我有一个具有正常INTEGER和STRING值的表,其中只有MODE为REPEATED。我想在BigQuery中创建的预期输出表。下面显示了它在BigQuery中显示的数据类型。无法使用UNNEST来获得所需的输出。如何将逗号分隔的值存储为字符串或数组?

i5desfxk

i5desfxk1#

将BigQuery表中具有“REPEATED”模式的INTEGER AND STRING数据类型值转换为逗号分隔的列表
对于一个字符串数组,ARRAY_TO_STRING()函数就足够了,但是它不适用于 array of integer
整数数组的替代值可以是FORMAT()TO_JSON_STRING
如果将上述函数应用于表,

WITH sample_table AS (
  SELECT '1234' pk, [5555, 5600] NumericField1, [6555, 6601] NumericField2, [] NumericField3, CAST(['t1','t2','t3','t4','t5'] AS ARRAY<STRING>) String_field
)
SELECT pk,
       NULLIF(TRIM(FORMAT('%t', NumericField1), '[]'), '') NumericField1,
       NULLIF(TRIM(FORMAT('%t', NumericField2), '[]'), '') NumericField2,
       NULLIF(TRIM(FORMAT('%t', NumericField3), '[]'), '') NumericField3,
       NULLIF(ARRAY_TO_STRING(String_field, ', '), '') String_field
  FROM sample_table;

***FORMAT('% t',repeated_column)**返回[a, b, c]形式的字符串,并带有方括号。
***TRIM(string,“[]”)**删除[前面和]后面的方括号。
***NULLIF()**将空数组转换为 null

相关问题