我在 Azure Synapse 中创建了一个管道,包含两个步骤:
在 CSV 文件中,第一行作为分隔符,具有以下结构: dbName、schema、src_table、dest_table
运行 Lookup 活动(仅读取文件内容)时,我得到以下输出(我们看到 dest_table 中有一个空值):
然后将该值作为参数发送到所使用的接收器数据集 (ADLS Parquet)。见下图:
此集成数据集(Sink Dataset)配置如下:
所以,条件如下:
当我们不提供文件名值时,它默认为“schema.table”,这是怎么回事?请参见下图查看数据传输和 parquet 文件创建的最终结果。
根据您提供的详细信息,当数据集中的文件名值为空时,它会使用
SchemaName.TableName
创建文件。
据我所知,当您将任何数据库中的数据存储到 Blob 存储并且不为目标文件设置任何名称时,ADF 的默认 beg=haviour 会自动创建名称为 Source SchemaName.TableName 的文件
解决方法可以像其他活动一样使用。要检查
dest_table
的值:
要检查
dest_table
的值是否为空,如果不为空,请使用 @equals(item().dest_table,null)
此表达式。
如果为空,那么您可以在复制活动中使用动态表达式设置目标文件的名称,如下所示
@concat(item().src_table,'_desttableNULL')
它将设置值,例如demo_desttableNULL.
如果不为空,则复制活动可以从 CSV 文件本身获取目标表值。