繁体   English   中英

如何在 Power bi 的 SQL 代码中的 WHERE IN 中使用列表?

[英]How to use list in WHERE IN in SQL code in Power bi?

我正在尝试使用 SQL 语言从 Power BI 中的 SQL 数据库加载表格的一部分。 我想使用 WHERE IN 并应用可变值列表进行过滤(这有助于减少加载时间)。 由于列表在变化,我不想将过滤器值写入公式。

我试过这个公式:

Source = Sql.Database("server", "database", [Query="SELECT header FROM report WHERE header IN ("&List&")"])

我收到有关文本和列表不匹配的错误消息:

Expression.Error:我们不能将运算符 & 应用于类型 Text 和 List。

这可行,但需要直接在公式中键入过滤值:

Source = Sql.Database("server", "database", [Query="SELECT header FROM report WHERE header IN ('Item1', 'Item2')"])

如何将列表转换为文本? 正确的语法是什么? 这可能吗?

您可以使用Text.Combine将列表转换为逗号分隔的值字符串。 因此,您的代码将如下所示:

Source = Sql.Database("server", "database", [Query="SELECT header FROM report WHERE header IN (" & Text.Combine(List, ",") & ")"])

如果需要引用列表值,请尝试这种方式(但请注意下面的注释!):

Source = Sql.Database("server", "database", [Query="SELECT header FROM report WHERE header IN ('" & Text.Combine(List, "','") & "')"])

请注意,您无需为此行为嵌入SQL查询。 如果只是通过GUI编辑器正常加载表并将过滤器应用于列,则该过滤器将“折叠”回SQL数据库引擎以进行评估。 “折叠”是Power Query / M中一项技术的名称,其中M查询可以转换为数据源的语言,以便例如在SQL数据库中而不是Power Query中执行过滤操作。 您始终可以通过右键单击一个应用的步骤并选择View Native Query来检查正在为SQL源生成什么查询。

如果您确实需要将列表内插到字符串中,则@AndreyNikolov的答案就是采用的方法。

Source = Sql.Database("server", "database", [Query="SELECT header FROM report WHERE header IN (" & Text.Combine(List, ",") & ")"])

List 是存储在某处的文本文件吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM