【发布时间】:2023-01-30 09:25:04
【问题描述】:
请帮助我使用无服务器 SQL 池将数据从 Google BigQuery 复制到 Azure Data Lake Storage Gen2。
我正在使用 Azure Synapse 的复制数据管道。问题是我无法弄清楚如何使用分层架构处理来自 BigQuery 的源表。这会导致接收器中缺少列和不准确的日期时间值。
源是一个Google BigQuery 表,它是由Google Cloud Billing 导出的一个项目的标准使用成本。源表的模式是分层的,具有嵌套列,例如 service.id;服务说明; sku.id; sku.描述;项目.labels.key; Project.labels.value 等
当我从复制数据管道的源选项卡中单击预览数据时,它只会给我列层次结构的顶部,例如:它只会显示 [service] 的列名称和 {\v" 的值: {"f":[{"v":"[service.id]"},{"v":[service.descrpition]"}]}} image description: Source with nested columns result in issues with Synapse Copy Data Pipline
我尝试使用以下内容配置复制管道:
来源标签:
使用查询 - 我认为解决方案就在这里,但我无法弄清楚选择正确列的语法。我观看了 TechBrothersIT How to Pass Parameters to SQL query in Azure Data Factory - ADF Tutorial 2021 的 Youtube 视频,但仍然无法执行。
水槽标签:
1.以 csv、json 和 parquet 的各种格式接收数据集 - csv 和 parquet 得到相似的结果,而 json 格式失败
2.将数据集汇入 Azure SQL 数据库 - 失败,因为无服务器 SQL 池不支持它
3.映射选项卡: 注意:在 1 月 22 日用屏幕截图显示问题进行了编辑。
- 尝试使用导入模式,使用
None, Flatten Hierarchy and Preserve Hierarchy的 Sink Tab 复制行为,但仍然无法将源列识别为 Hierarchical。无法获取集合参考或高级编辑器配置以显示。参考:Screenshot of Source columns not detected as HierarchicalMS Doc on Schema and data type mapping in copy activity我也尝试过数据流管道,但它不支持 Google BigQueryData Flow Pipe Source do not support BigQuery yet
以下是重现/了解我的情况的步骤:
- 注册谷歌云,设置账单导出(标准使用成本)到 BigQuery。
- 在 Azure Synapse Analytics 中,创建具有用户身份验证的链接服务。请关注 Data Tech 的 Youtube 视频 "Google BigQuery connection (or linked service) in Azure Synapse analytics"
- 在 Azure Synapse Analytics 中,Integrate,单击“+”号 -> Copy Data Tool
我相信答案在带有查询和函数的源选项卡中,请帮助我解决这个问题,或者为我指明正确的方向。
期待您的意见。提前致谢!
【问题讨论】:
-
这会导致接收器中缺少列和不准确的日期时间值。--- 1.你在excel中显示。显示如果您更改列的日期格式,它将为您提供与源相同的结果。 2. 缺少哪些栏目?从您的屏幕截图中,我无法找出缺失的列。
-
@阿斯温。谢谢你的意见。我已将目标列中管道的映射选项卡更改为日期时间,格式为
"YYYY-MM-DD、"YYYY-MM-DD hh:mm:ss[.nnnnnnn]"和"YYYY-MM-DD HH:MI:SS",它们都给出了不同的结果:2022-00-15、YYYY-12-DD 01:00:00[.nnnnnnn]和YYYY-12-DD 06:12I:SS。我试过调试,但输出没有详细说明它是如何处理格式的。至于缺失的列,后面的部分(右侧的列)如果为空,则整个列都将丢失。我将不得不尝试使用 Sink Tab 的复制行为来了解更多信息。 -
@Aswin,关于缺少的列,它发生在
label.key和label.value列都为空的情况下,然后结果将合并为一列而不是两列。这导致结果列移位,例如,上面一行有两列{"v":[{"v":{"f":[{"v":"goog-resource-type"}{"v":"bigquery_dataset"}]}}]},下面一行只有一列{"v":[]},然后其余数据向左移动一列. -
请参考此 MS doc 将分层列转换为表格列。
-
在复制活动映射设置中,1) 导入模式 2) 切换高级编辑器 3) 在集合引用中提供数组,以便在该值处迭代和提取数据。 4) 将列从源映射到汇
标签: tsql google-bigquery azure-data-factory azure-synapse