如何调用Excel Power Query中的仅连接(Connection Only)查询并筛选结果
你之前的写法错误有两点:一是仅定义了文本格式的SQL字符串,没有调用执行逻辑,自然只会返回文本本身;二是SQL语句是发送到SQL服务器执行的,服务器无法识别你本地Power Query里定义的qGetData查询名,无法直接把它作为SQL的查询表源。
有两种常用的实现方案:
方案1:用Power Query原生表操作(最简便)
qGetData已经将符合PartID条件的数据集加载到Power Query环境中,直接用原生M函数做筛选、选列即可,无需额外写SQL:
let Source = qGetData, // 筛选Color为Red的行 FilteredRows = Table.SelectRows(Source, each [Color] = "Red"), // 仅保留Part列 KeepOnlyPart = Table.SelectColumns(FilteredRows, {"Part"}) in KeepOnlyPart
方案2:修改原查询的SQL语句(适合大数据量场景,筛选逻辑下推到数据库执行)
如果数据量较大,不想把全量PartID匹配的结果拉到本地再筛选,可以直接修改原qGetData的查询语句,把Color筛选条件直接加在SQL中:
let Source = Excel.CurrentWorkbook(){[Name="getValues"]}[Content], PartID = Source{0}[Column1], // 直接在原生SQL中新增Color筛选条件 Query = "SELECT Part FROM myParts WHERE PartID = '"& PartID &"' AND Color = 'Red'", Target = Sql.Database("myServer", "myDatabase", [Query=Query]) in Target
内容的提问来源于stack exchange,提问作者Jeff Brady
相关产品推荐
相关产品推荐

