在 Google Dataprep 中将字符串转换为数组
Convert a string to an array in Google Dataprep
我正在尝试对 Dataprep 中的数据进行非规范化,以便我可以在 BigQuery 中使用它。
更具体地说,我想将链接到我的帐户 table 的 account_profile table 中的条目与外键 'account_id' 转换为我的数组帐户 table。 (Account_profile 存储联系方式...不好的名字,我知道。)
在数据准备中,我
- 将 account_profile 中的行转换为 json 个对象,
- 然后通过account_id、
加入两个table
- 然后按 account_id 对行进行分组,并使用聚合函数 LIST 将所有对象转换为对象数组。
问题是,当我尝试在 BigQuery 中取消嵌套该列,或在 BigQuery 中执行任何其他类似数组的操作时,我收到如下错误:"Values referenced in UNNEST must be arrays."
我的数据看起来不错。例如,这里有一行。
[{"profile_identifier":"ttcuongem+29@gmail.com","verification_code":"abc789","enabled":true,"id1":2818},{"profile_identifier":"xyz123,"enabled":false,"id1":2874}]
我找不到让 BigQuery 将其视为数组的方法,也找不到让 Dataprep 将此类数据创建为数组而不是字符串的方法。人们发布的唯一解决方案是非常具体的技巧,不适用于这种一般情况。
我觉得我正在遵循非规范化最佳实践,并对 Google ELT 工具链中存在这种差距感到惊讶。我错过了什么?
以下适用于 BigQuery 标准 SQL
您可以使用最近引入的 JSON_EXTRACT_ARRAY 函数,如下例所示
#standardSQL
WITH `project.dataset.table` AS (
SELECT '''[
{"profile_identifier":"ttcuongem+29@gmail.com","verification_code":"abc789","enabled":true,"id1":2818},
{"profile_identifier":"xyz123","enabled":false,"id1":2874}
]''' string_col
)
SELECT JSON_EXTRACT_ARRAY(string_col) AS arr_col
FROM `project.dataset.table`
输出
Row arr_col
1 {"profile_identifier":"ttcuongem+29@gmail.com","verification_code":"abc789","enabled":true,"id1":2818}
{"profile_identifier":"xyz123","enabled":false,"id1":2874}
我正在尝试对 Dataprep 中的数据进行非规范化,以便我可以在 BigQuery 中使用它。
更具体地说,我想将链接到我的帐户 table 的 account_profile table 中的条目与外键 'account_id' 转换为我的数组帐户 table。 (Account_profile 存储联系方式...不好的名字,我知道。)
在数据准备中,我
- 将 account_profile 中的行转换为 json 个对象,
- 然后通过account_id、 加入两个table
- 然后按 account_id 对行进行分组,并使用聚合函数 LIST 将所有对象转换为对象数组。
问题是,当我尝试在 BigQuery 中取消嵌套该列,或在 BigQuery 中执行任何其他类似数组的操作时,我收到如下错误:"Values referenced in UNNEST must be arrays."
我的数据看起来不错。例如,这里有一行。
[{"profile_identifier":"ttcuongem+29@gmail.com","verification_code":"abc789","enabled":true,"id1":2818},{"profile_identifier":"xyz123,"enabled":false,"id1":2874}]
我找不到让 BigQuery 将其视为数组的方法,也找不到让 Dataprep 将此类数据创建为数组而不是字符串的方法。人们发布的唯一解决方案是非常具体的技巧,不适用于这种一般情况。
我觉得我正在遵循非规范化最佳实践,并对 Google ELT 工具链中存在这种差距感到惊讶。我错过了什么?
以下适用于 BigQuery 标准 SQL
您可以使用最近引入的 JSON_EXTRACT_ARRAY 函数,如下例所示
#standardSQL
WITH `project.dataset.table` AS (
SELECT '''[
{"profile_identifier":"ttcuongem+29@gmail.com","verification_code":"abc789","enabled":true,"id1":2818},
{"profile_identifier":"xyz123","enabled":false,"id1":2874}
]''' string_col
)
SELECT JSON_EXTRACT_ARRAY(string_col) AS arr_col
FROM `project.dataset.table`
输出
Row arr_col
1 {"profile_identifier":"ttcuongem+29@gmail.com","verification_code":"abc789","enabled":true,"id1":2818}
{"profile_identifier":"xyz123","enabled":false,"id1":2874}