我正在使用ADF将数据从 snowflake 表(源)复制到Azure Blob CSV文件(接收器)。接收器数据集已选中“第一行作为标题”。如果源表中包含数据,则它可以正常工作。但是,如果源表为空,则生成的文件将为空,没有标题。请查看设置的屏幕截图。我想知道,不管源表是否为空,如何使生成的文件带头。谢谢100d1x
的字符串
pb3s4cty1#
您可以尝试以下解决方法,将头文件复制到目标文件中。
0
在查找中使用下面的查询来获取表的计数。
select count(*) as count from emp
字符串
的数据然后在if活动中给予下面的表达式。
@equals(activity('Lookup1').output.value[0].COUNT,0)
型在if的True activities中,使用以下查询复制活动的来源。
select listagg(column_name,',') from information_schema.columns where table_schema ilike 'public' and table_name ilike 'emp'
型
的如果您的目标文件中的列x1是|,则需要使用|,而不是像上面查询中的listagg(column_name,'|')这样的,。这将给予分隔符(,)分隔的列名作为一行,列名为LISTAGG(COLUMN_NAME,','),如下所示。
|
listagg(column_name,'|')
,
LISTAGG(COLUMN_NAME,',')
LISTAGG(COLUMN_NAME,',') Id,name
型但在这里,我们只需要具有必需标题的行,而不是列名。因此,在此复制活动的接收数据集中,取消选中First row as header并给予以下配置。这就是为两个复制活动使用不同数据集的原因。
First row as header
的
您可以根据自己的需求更改列名称,但也需要在查询中更改列名称。
在if的False活动中,给予您对另一个目标数据集的常规复制活动。执行管道,你的头将被复制到Blob中。
1条答案
按热度按时间pb3s4cty1#
您可以尝试以下解决方法,将头文件复制到目标文件中。
0
。0
,另一个是常规复制到目标文件。在查找中使用下面的查询来获取表的计数。
字符串
的数据
然后在if活动中给予下面的表达式。
型
在if的True activities中,使用以下查询复制活动的来源。
型
的
如果您的目标文件中的列x1是
|
,则需要使用|
,而不是像上面查询中的listagg(column_name,'|')
这样的,
。这将给予分隔符(,)分隔的列名作为一行,列名为
LISTAGG(COLUMN_NAME,',')
,如下所示。型
但在这里,我们只需要具有必需标题的行,而不是列名。
因此,在此复制活动的接收数据集中,取消选中
First row as header
并给予以下配置。这就是为两个复制活动使用不同数据集的原因。的
您可以根据自己的需求更改列名称,但也需要在查询中更改列名称。
在if的False活动中,给予您对另一个目标数据集的常规复制活动。
执行管道,你的头将被复制到Blob中。
的