45 动态加载csv sheet(untill的使用)
- 假设,我们有多个csv文件,里面的sheet名称不一样,且数量也不知道,需要将每个sheet copy到blob里
46 给sql query传递动态参数
很重要的知识点:
@concat('select * from Sales where Country= ''',pipeline().parameters.p_country,'''')
中的引号的含义可以理解为
DECLARE @p_country NVARCHAR(255) = 'USA';
DECLARE @sql NVARCHAR(MAX);
SET @sql = 'SELECT * FROM Sales WHERE Country = ''' + @p_country + '''';
EXEC(@sql);
其中''' + @p_country + '''
是一部分,表示了
'USA'
最后一个引号是和第一个select前的引号一个整体
SET @sql = ' SELECT * FROM Sales WHERE Country = ''' + @p_country + ''' ';
- 另一种例子的解释:
@concat('select * from Sales where Country = ''',pipeline().parameters.p_country,'''','and Region = ''',pipeline().parameters.p_region,'''')
这个表达式的工作方式如下:
- @concat 是用来拼接字符串的函数。
'select * from Sales where Country = '' 是 SQL 查询的开始部分,其中 '' 在 ADF 表达式中表示 SQL 字符串中的一个单引号。 - pipeline().parameters.p_country 是第一个动态参数,代表国家名。
'''' 这部分稍微复杂。在 ADF 中,连续的四个单引号表示两个单引号字符,它们在 SQL 语句中表示一个单引号(结束国家名字符串字面量)和另一个单引号(开始下一个字符串字面量)。 - 'and Region = '' 是连接第一个和第二个条件的 SQL 字符串,同样地,这里的 '' 表示 SQL 字符串中的一个单引号。
- pipeline().parameters.p_region 是第二个动态参数,代表区域名。
- 最后的 ''' 表示字符串的结束部分,同样地,这里的两个连续单引号代表 SQL 字符串中的一个单引号,而最后一个单引号则是结束整个 ADF 字符串字面量。
- 所以,如果 p_country 是 "France",p_region 是 "Europe",这个表达式将生成以下 SQL 查询字符串:
select * from Sales where Country = 'France' and Region = 'Europe'
在这个最终的 SQL 查询字符串中,'France' 是 SQL 查询中的字符串字面量,它的单引号是通过 SQL Server 语句中的两个连续单引号表示的。
'select * from Sales where Country ='''+'usa'+''''
- 流程
1.创建pipeline的parameters,分别为p_country 和p_region,这里只是为了模拟上一步传递来的参数
- 创建copy程序,这里比较难的在于sql是动态的,需要使用上面1的参数,动态sql如下
@concat('select * from Sales where Country = ''',pipeline().parameters.p_country,'''','and Region = ''',pipeline().paremeters.p_region,'''')
网友评论