我见过的大多数示例都是RECORD类型,但我有一个具有正常INTEGER和STRING值的表,其中只有MODE为REPEATED。我想在BigQuery中创建的预期输出表。下面显示了它在BigQuery中显示的数据类型。无法使用UNNEST来获得所需的输出。如何将逗号分隔的值存储为字符串或数组?
i5desfxk1#
将BigQuery表中具有“REPEATED”模式的INTEGER AND STRING数据类型值转换为逗号分隔的列表对于一个字符串数组,ARRAY_TO_STRING()函数就足够了,但是它不适用于 array of integer。整数数组的替代值可以是FORMAT()或TO_JSON_STRING。如果将上述函数应用于表,
ARRAY_TO_STRING()
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
[a, b, c]
[
]
null
1条答案
按热度按时间i5desfxk1#
将BigQuery表中具有“REPEATED”模式的INTEGER AND STRING数据类型值转换为逗号分隔的列表
对于一个字符串数组,
ARRAY_TO_STRING()
函数就足够了,但是它不适用于 array of integer。整数数组的替代值可以是
FORMAT()
或TO_JSON_STRING
。如果将上述函数应用于表,
***FORMAT('% t',repeated_column)**返回
[a, b, c]
形式的字符串,并带有方括号。***TRIM(string,“[]”)**删除
[
前面和]
后面的方括号。***NULLIF()**将空数组转换为
null