一般在POWER QUERY取数时,源设置的SQL 语句都写好,如:
select * from products where productname like '计算机'
如果希望每次刷新数据时,由用户录入 计算机 参数值,应该如何实现呢?
先谢谢各位DALAO!
一般在POWER QUERY取数时,源设置的SQL 语句都写好,如:
select * from products where productname like '计算机'
如果希望每次刷新数据时,由用户录入 计算机 参数值,应该如何实现呢?
先谢谢各位DALAO!
SQL 语句在 M 里是以文本形式存在,例如你用的是 MySQL ,生成的 M 代码是:
= MySQL.Database("服务器地址", "数据库名", [Query="select * from products where productname like '计算机'"])
问题可以简化为:有一段文本是"select * from products where productname like '计算机'",如何根据用户输入的值让文本动态变化?
可以先在 Excel 单元格里输入"计算机"三个字,Ctrl+T 插入表格,并在名称管理器里命名为"参数"。
然后在查询编辑器中添加自定义步骤:
= Excel.CurrentWorkbook(){[Name="参数"]}[Content][参数]{0}
步骤名命名为"参数",这样就获取到了用户输入的值,再和前面不变的常量拼接起来就行了。
= "select * from products where productname like '" & 参数 & "'"
@焦棚子 谢谢,这是要在数据库里面去根据SHEET上查询内容建临时表并关联主数据表了哇,还有再简单点的方案么?PQ小白感觉难度略大。 比如直接 SQL语句 select * from 表名 where productname like 参数, 然后再 指定某个SHEET的某单元格为参数值,或者刷新时弹出提示文本框要求用户录入参数值 呢?
SQL 语句在 M 里是以文本形式存在,例如你用的是 MySQL ,生成的 M 代码是:
= MySQL.Database("服务器地址", "数据库名", [Query="select * from products where productname like '计算机'"])
问题可以简化为:有一段文本是"select * from products where productname like '计算机'",如何根据用户输入的值让文本动态变化?
可以先在 Excel 单元格里输入"计算机"三个字,Ctrl+T 插入表格,并在名称管理器里命名为"参数"。
然后在查询编辑器中添加自定义步骤:
= Excel.CurrentWorkbook(){[Name="参数"]}[Content][参数]{0}
步骤名命名为"参数",这样就获取到了用户输入的值,再和前面不变的常量拼接起来就行了。
= "select * from products where productname like '" & 参数 & "'"
楼上施大神的名称管理办法也是极好的。
单条件很好用
另外如果是多条件就需要考虑效率的问题咯。
看你的实际场景。
谢谢@Alex 和@焦棚子 ,ALEX的名称管理的确不错,比较适合我现在要用的这种场景!