【问题标题】:Power Query to Filter a SQL view based on an Excel column list基于 Excel 列列表筛选 SQL 视图的 Power Query
【发布时间】:2019-03-08 20:19:42
【问题描述】:

有没有办法使用 Power Query 根据 Excel 表列中的值列表过滤 SQL 视图?

我有一个返回大量数据(数百万条记录或属性)的 SQL 视图。用户希望根据属性 ID 的 excel 表列进行过滤。我知道我可以根据视图和电源查询中的 excel 列之间的属性 ID 进行合并连接。但看起来合并首先引入了数百万条记录,然后在连接中对其进行了过滤。这需要很长时间。用户希望每天动态更改 propertyID 列表并运行查询。

本质上,我想在 Excel 中创建电源查询 SQL 中有什么

SELECT * FROM SQLViewName 
WHERE PropertyID IN (Select Column from ExcelTable) 

【问题讨论】:

    标签: sql-server excel powerbi powerquery m


    【解决方案1】:

    您应该可以使用List.Contains 函数来做到这一点。

    如果我的ExcelTable

    ID
    ---
    436
    437
    438
    439
    

    然后添加这样的过滤器应该可以解决问题:

    Table.SelectRows(SQLViewName, each List.Contains(ExcelTable[ID], [PropertyID]))
    

    当我尝试这个并在最后一个应用步骤中执行 View Native Query 时,它会将 Excel 表折叠成一个 WHERE 子句,其中 ExcelTable 值是这样的文字:

    select [_].[PropertyID],
        [_].[OtherColumns]
    from [dbo].[SQLViewName] as [_]
    where [_].[PropertyID] in (436, 437, 438, 439)
    

    这让我可以在几秒钟内加载数百万行的表。

    【讨论】:

    • 需要从一个实时的excel列中选择到SQL中,就像OP一样,我写了VBA来注入列表,但如果可能的话希望由M完成。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    相关资源
    最近更新 更多