Powerquery-在SQL查询中引用Excel单元格值



我正试图修改给我的excel工作表,并连接到SQL数据库,如下所示:

select * from DB.AccountAssignments where Company_Code = '102'

如何替换静态102值以引用Excel中的特定单元格?例如,单元格A1?当然,目标是,当我将102更改为不同的值时,查询将重新运行,而不必每次都输入PowerQuery自行编辑查询。

注意:我发现一些例子涉及在查询运行并提取数据后进行过滤。但是,数据源很大,所以我需要在查询中嵌入公司代码参数,这样Powerquery中的数据就已经被过滤掉了。这使得运行5秒的查询与运行5分钟的查询之间存在差异。

我花了几个小时在旧的帖子上尝试指导,但到目前为止还没有成功。

我也遇到了同样的问题,我花了一些时间来理解如何实现Sharif的答案。因此,以下是基于相同想法的更详细的说明:

  • 将单元格转换为命名区域(公式>定义名称(
  • 选择单元格并转到"数据">获取数据>来自其他来源>从Table/Range打开Power Query Editor
  • 右键单击编辑器中小预览表中的单元格值,然后选择"向下搜索">
  • 转到主页/文件>关闭&加载收件人(此处的"收件人"很重要!(。弹出"导入数据"窗口。选择"仅创建连接">

现在您有了一个查询参数,可以在任何其他查询中使用。

  • 打开SQL查询的电源查询编辑器(编辑(
  • 使用查询中的参数:Source = Odbc.Query("dsn=SQLDSN", "select * from DB.AccountAssignments where Company_Code = " & NamedRangeCompanyCodeFromCell )
  • 我得到了错误表达式。错误:我们无法应用运算符&以键入Text和Number。我通过更改我的查询参数的类型来解决这个问题:在Applied Steps>更改了类型,我将Int64.Type更改为type text
  • 很可能,您还需要授予运行此查询的权限

与其创建单独的查询参数,还可以在SQL查询中动态创建:

  • 打开SQL查询的Power Query Editor(编辑(
  • 打开高级编辑器(主页>高级编辑器(
  • 在此处执行所有必要的步骤,例如:
let
Params = Excel.CurrentWorkbook(){[Name="myNamedRange"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Params,{{"Column1", type text}}),
CodeFromCell = #"Changed Type"{0}[Column1],
Source = Odbc.Query("dsn=SQLDSN", "select * from DB.AccountAssignments where Company_Code = " & CodeFromCell)
in
Source

将单元格A1从范围转换为表格(插入->表格(将表命名为param(或任何您喜欢的名称(使用以下行在您的电力查询中使用此表:

params = Excel.CurrentWorkbook(){[Name="params"]}[Content],
code = params{0}[value],

在SQL查询中使用这个:

select * from DB.AccountAssignments where Company_Code = code

最有可能的是,在您的电力查询编辑器中,您会有类似于以下行的内容:

Source = Odbc.Query("dsn=SQLDSN", "select * from DB.AccountAssignments where Company_Code = " & code ),

最新更新