azure Synapse/ ADF -如果复制前脚本中的动态配置列为True,如何截断表

zaq34kh6  于 2023-03-31  发布在  其他
关注(0)|答案(2)|浏览(162)

我想截断配置表中我的列isTrun的值为True的表。脚本需要在复制活动的Sink预复制脚本中运行。
数据流如下:
查找活动查找配置表。然后输入for each loop并复制要查找的表。在复制之前,需要对配置表中isTrun列中的值为True的表进行截断。
我面临的问题是我所有的尝试都有无效的语法。
我已经尝试了以下脚本:

if(@item().isTrun = 1, TRUNCATE TABLE [@{item().targetSchema}].[@{item().targetTable}], '1=1')

这个脚本:

TRUNCATE TABLE @{if(equals(item().isTrun, 'True'),'[@{item().targetSchema.item()}].[@{targetTable}]',' ')}

先谢谢你了!

k5ifujac

k5ifujac1#

对复制前脚本使用以下表达式:

@{if( 
equals(item().isTrun,1), 
concat( 'truncate table ', item().doel_schema, '.', item().doel_tabel ) ,'')}

它检查isTrun是否等于1,如果是,它将truncate命令与表名连接起来。如果不是,前脚本将是一个空字符串,不做任何事情。

rpppsulh

rpppsulh2#

  • 你可以直接使用if函数,而不是尝试使用字符串插值和if条件。下面是我查找的输出:

  • 下面是你可以如何做到这一点。在pre-copy script,你可以使用来实现的要求。
@{if(equals(item().isTrun,'True'),concat('TRUNCATE TABLE ',item().table),'')}

  • 因此,当isTrun值为True时,则if condition检查并执行truncate语句,并忽略isTrun值是否为false。以下是在上述执行(isTrun为false)之后的表t2(source和sink中的1行)。

相关问题