【发布时间】:2022-11-04 23:17:03
【问题描述】:
我正在尝试在 BigQuery 函数中形成以下解决方案。
我的数据格式:
{
"column1" : "test1",
"column2" : "test2",
"column3" ": [{'field1': 'a', 'field2': 'b'}, {'field1': 'c', 'field2': 'd'}]
}
期待解决方案:
{
"column1" : "test1",
"column2" : "test2",
"column3" ": [['a', 'b'], ['c', 'd']]
}
基于以下解决方案,我实现了一个 Javascript 函数来形成预期的数组有效负载。但是,使用 RETURN 类型我无法配置 ARRAY<ARRAY>
实现功能:
CREATE TEMP FUNCTION JsonToItems(items ARRAY<STRUCT<a STRING, b STRING>>)
RETURNS ARRAY<ARRAY<STRING>> (<--- Not able to return this)
LANGUAGE js AS r"""
console.log(items);
var arr_1 = [];
for (i = 0; i < items.length; i++) {
var arr_2 = [];
var keys = Object.keys(items[i]);
for (var j = 0; j < keys.length; j++) {
arr_2.push(items[i][keys[j]]);
}
arr_1.push(arr_2);
}
return arr_1;
""";
如果有人对如何处理上述解决方案有任何想法,请告诉我.. 谢谢
【问题讨论】:
-
不幸的是,BigQuery 不支持数组数组。
-
嗨@Ravindra Bakkamanthala,BigQuery 不支持数组数组,但您可以创建一个结构数组,如documentation 中所述。让我知道这是否有帮助。
-
感谢@Jaytiger @Shipra Sarkar 的投入。我已经实现了将 temp 函数从
return arr_1更改为return JSON.stringify(arr_1)并更改为RETURNS STRING解决了我的问题。 -
嗨@RavindraBakkamanthala,你能发布你的答案,以便它也能帮助社区成员进行研究吗?
标签: google-bigquery