我在 Azure 数据工厂中使用 Google BigQuery 源进行复制事件。 我需要导入整个表(其中包含嵌套字段 - BigQuery 中的记录)。
嵌套字段按如下方式导入(仅包含数据值的字符串):
"{\"v\":{\"f\":[{\"v\":\"1\"},{\"v\":\"1\"}, {\"v\":\"1\"},{\"v\":null},{\"v\":\"1\"},{\"v\":null},{\"v\":null},{\"v\":\"1\"},{\"v\":null},{\"v\":null},{\"v\":null },{\"v\":null},{\"v\":\"0\"}]}}"
预期输出类似于:
{"nestedColName": [{"subNestedColName": 1}, {"subNestedColName": 1}, {"subNestedColName": 1}, {"subNestedColName": null}, ...] }
我认为这是数据工厂方面的连接器问题,但不确定如何继续。
考虑过使用Databricks直接从GBQ导入数据,然后将DataFrame保存到sink。
还考虑过查询列的子集并在需要时使用 UNNEST
,但不想这样做,因为 Parquet 可以处理 Array 和 Map 类型。
以前有人遇到过这种情况/你做了什么?
最佳答案
使用的解决方案:
适用于 Google BigQuery 的 Databricks (Spark) 连接器:
https://docs.databricks.com/data/data-sources/google/bigquery.html
这会保留架构和嵌套字段名称。
关于Azure 数据工厂 - Google BigQuery 复制数据事件不返回嵌套列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69195947/