【问题标题】:Mapping data flow SQL query and Parameters failing映射数据流 SQL 查询和参数失败
【发布时间】:2021-10-28 04:15:47
【问题描述】:

在我的映射数据流中,我已将其简化为仅用于测试的 dimdate

我的参数是

如果您使用的是我想要实现的参数,源代码甚至会告诉您如何输入选择查询

然后我导入但得到两个不同的错误 用于参数化表格`

SELECT * FROM {$df_TableName}

我明白了

来自选择 * 或个别列的此错误

我只尝试了 WHERE 子句(我真正需要的)作为参数,但不断收到数据类型不匹配错误

然后我开始测试多种方式,它只允许从下面的查询中对架构进行参数化

无论我做什么,所有其他选项似乎都失败了

SELECT * FROM [{$df_Schema}].[{$df_TableName}] Where [Period] = {$df_incomingPeriod}

SELECT * FROM [dbo].[DimDate] Where [Period] = {$df_incomingPeriod}

SELECT * FROM [dbo].[{$df_TableName}] Where [Period] = {$df_incomingPeriod}

SELECT * FROM [dbo].[DimDate] Where [Period] = 2106

我知道 Integer 数据类型存在问题,但不知道如何在不更改其类型的情况下将其传递给参数中的查询,因为 sql 引擎无法将 [句点] 作为字符串运行

【问题讨论】:

    标签: apache-spark apache-spark-sql azure-data-factory-2 azure-data-factory-pipeline azure-data-flow


    【解决方案1】:

    使用表达式构建器中的 CONCAT 函数在数据流中构建查询。

    concat(<this> : string, <that> : string, ...) => string
    

    注意:将可变数量的字符串连接在一起。所有变量都应该是字符串形式。

    示例 1

    concat(toString("select * from "), toString($df_tablename))
    

    示例 2

    concat(toString("select * from "), toString($df_tablename), ' ', toString(" where incomingperiod = "), toString($df_incomingPeriod))
    

    【讨论】:

    • 绝对准确!我希望有一种方法可以更好地调试映射数据流,以便更好地理解故障。我想这需要一些经验
    【解决方案2】:

    太棒了,它对我来说就像魔术一样。我正在努力参数化我正在通过数组列表传递的表 = 名称。 创建了一个数据流参数并给出了这个值: @item().TABLE_NAME

    【讨论】:

      猜你喜欢
      • 2023-03-14
      • 2021-01-31
      • 2017-09-16
      • 2023-01-30
      • 1970-01-01
      • 2015-06-28
      • 2011-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多