如何在Azure Data Factory的SQL查询中添加EndDate作为首列
正确实现Azure Data Factory中添加常量EndDate列的聚合查询
你的问题出在没有正确将ADF变量EndDate拼接为SQL中的常量列,错误写法把ADF的变量语法直接嵌入了SQL字符串,导致语法错误。以下是修正后的完整查询语句:
@concat('Select ''', variables('EndDate'), ''' As EndDate, s.StoreNumber, tt.TransactionType, tt.IsReturn, Sum(Convert(Money, f.Amount)) As TotalSales, Sum(f.Qty) As TotalSalesQty From fact.PrdTransaction f Join dim.Calendar c On f.DateID = c.DateID Join dim.Store s On f.StoreID = s.StoreID Join dim.TransactionType tt On f.TransactionTypeID = tt.TransactionTypeID Where c.Date Between ''', variables('StartDate'), ''' And ''', variables('EndDate'), ''' Group By s.StoreNumber, tt.TransactionType, tt.IsReturn Order By s.StoreNumber, tt.TransactionType, tt.IsReturn')
关键修正点:
- 首列常量拼接:用
''', variables('EndDate'), ''' As EndDate实现将ADF变量值作为SQL常量列返回,生成的SQL会类似'2021-12-10' As EndDate,确保每行的EndDate列都是变量指定的值。 - 移除错误语法:删除了
c.Date =variables(''EndDate'')这种不符合SQL规范的写法,不需要关联Calendar表的Date字段来生成该列。 - 分组逻辑不变:由于EndDate是全局常量,不需要加入
Group By子句,不影响原有聚合逻辑。
生成的SQL执行后,就能得到你期望的输出格式:
EndDate StoreNumber TransactionType IsReturn TotalSales TotalSalesQty 12/10/2021 1 something 1 something1 something1 something 1 12/10/2021 2 something 2 something2 something2 something 2
内容的提问来源于stack exchange,提问作者jacky789
相关产品推荐
相关产品推荐

