【问题标题】:Power Query Assign a string from excel to sql server variablePower Query 将字符串从 excel 分配给 sql server 变量
【发布时间】:2016-03-05 21:42:56
【问题描述】:

我正在使用 Power 查询,我想将一个逗号分隔的字符串从一个 excel 单元格分配给一个 sql server 变量。到目前为止,我的电源查询如下。我的参数在“Column2”中的 Excel“Table3”中:

let

    ProdParameterSource =Excel.CurrentWorkbook(){[Name="Table3"]}[Content]{0}[Column2],


    Source = Sql.Database("server", "database", [Query="Declare @Product varchar(max) = "&(ProdParameterSource)&"  select @Product"])
in
    Source

我看到以下错误:

我在excel表中看到的参数如下:

如何修复此错误并在 sql server 变量 ABC 中查看我的输入参数为“44,216”(带引号)。

【问题讨论】:

    标签: sql-server excel sql-server-2012 powerquery


    【解决方案1】:

    我不会做很多电源查询,但我确实在 Power BI Desktop 版本中工作。

    首先,您需要查看MSDN 上对 SQL.Database() 的引用。

    它正在寻找一个完整的查询,要么是你组成的动态字符串,要么是对存储过程的调用。

    下面我的简单示例,从 Adventure Works DW 2012 Customer 表中提取数据。

    您缺少的是一个 TSQL 语句或多个 TSQL 语句。使用分号将语句组合成一批来调用。

    下面的示例将变量@x 创建为整数并返回值。这几乎就像你上面的例子。

    系统会提示您提供安全性(受信任的凭据),它会告诉您这是一个未加密的连接。

    我做了一些环顾网络。 Reeves Smith 的这篇文章与我的上一个示例类似,但偏向于 power query 和 excel。请记住,两种产品都使用相同的引擎。

    https://reevessmith.wordpress.com/2014/08/19/power-query-and-stored-procedures-with-parameters/

    再次

    【讨论】:

      【解决方案2】:

      这将解决它:[Query="Declare @Product varchar(max) = '" & ProdParameterSource & "' select @Product"])

      这将以更安全的方式修复它,因为您将转义任何可能超出字符串值的额外单引号:[Query="Declare @Product varchar(max) = '" & Text.Replace(ProdParameterSource, "'", "''") &"' select @Product"])

      发生的情况是,Power Query 将传递给 Query 的文本视为整个脚本,并且当您构建脚本时,您没有将 ProdParameterSource 的值放在引号中,因此脚本似乎将 varchar 值设置为 44,216 (不带引号)。这是一个无效的声明。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-02-08
        • 2013-02-23
        • 2018-06-07
        • 2013-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多