使用 Power BI 中的列表从 SQL 中获取数据

时间:2021-06-22 18:07:46

标签: sql-server powerbi powerquery powerbi-datasource

我必须从 Power BI 中的 SQL Server 数据库获取数据,并且我在查询中使用了 where 子句。我创建了一个 Power BI 列表,它有数百个 ID(整数类型),当我使用 text.combine M 函数组合列表值并用逗号分隔它们时,我遇到了数据类型问题。有谁知道使用什么查询来制作逗号分隔的整数列表并在 where 子句中使用。

<块引用>

Expression.Error:我们无法将值 2382874 转换为文本类型。
详情:
值=2382874
类型=[类型]

2382874 是我列表中的第一个 ID。

这是M代码:

let
Source = Sql.Database("server", "db", [Query="SELECT #(lf) [ID]#(lf) ,[company]#(lf) ,[UserID]#(lf)#(tab) 
FROM [dbo].[mysqldb] WHERE [ID] IN (" & Text.Combine(ID_List, ",") & ")" ] )
in
Source

有人建议我在尝试组合列表值之前将列表类型转换为文本,但我没有这样做。任何建议都意义重大。

谢谢

1 个答案:

答案 0 :(得分:0)

ID_List 是一个整数列表,您在其上使用了 Text.Combine,这就是您遇到此问题的原因,因为您的列表不包含文本。它们需要先转换为 text ,然后才能应用 Text.Combine。在以下示例中,如果您不将 #"Changed Type" 应用于 text,您将遇到相同的错误。

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlSK1YlWMgKTxkqxsQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}}),
    Column1 = Text.Combine(#"Changed Type"[Column1],",")
in
    Column1