具有更改日期格式的 Azure Synapse 外部表位置参数化

问题描述

是否可以将参数(文件夹/文件路径)传递给 Azure Synapse 外部表的位置?

LOCATION=/Windows/Folder/YYYY/MM/DD/File_name_YYYYMMDD.csv

我想将 YYYY/MM/DD 和 File_name_YYYYMMDD.csv 参数化为每天都在变化的参数。 我可以将值从 Azure 数据工厂发送到 Azure Synapse

提前致谢

解决方法

不幸的是,在突触中没有具有正常外部表定义的直接参数化选项。因此,为了实现您的方案,您需要在运行时通过动态 SQL 创建外部表。 使用查找活动或存储过程活动,其中您将位置值作为参数传递,并基于该参数通过动态 SQL 创建外部表

,

我正在使用 Azure SQL,但我认为创建外部表与 Azure Synapse 相同。我们可以使用 ADF 动态创建 EXTERNAL TABLE。

例如:

  1. 在 ADF 中,我们可以声明多个变量来获取动态内容。 enter image description here

  2. 如果您使用复制活动,我们可以向 @{concat('DROP EXTERNAL DATA SOURCE MyAzureInvoices CREATE EXTERNAL DATA SOURCE MyAzureInvoices WITH ( TYPE = BLOB_STORAGE,LOCATION = ',variables('ContainerStr'),variables('DateStr'),',CREDENTIAL = UploadInvoices );')} 添加动态内容。 enter image description here

  3. ADF 将帮助我们在复制活动之前创建外部表。 enter image description here