【问题标题】:Passing a Dynamic List of Values into Table.Combine将值的动态列表传递到 Table.Combine
【发布时间】:2017-12-30 02:23:07
【问题描述】:

我有一个相对简单的问题,似乎应该可以实现,但我已经尝试了所有方法,但都没有成功。

情况如下:

在 Excel 中使用 Power Query 我希望能够使用 Table.Combine 函数组合多个查询(我们称之为:Query1、Query2 和 Query3)到一个查询中。

唯一的问题是我将合并的查询列表将是动态的并且依赖于另一个查询(我们称之为:QueryList)

例如,在某些情况下 QueryList 将是:

  • 查询1
  • 查询2
  • 查询3

在其他一些条件下,QueryList 可能只是:

  • 查询1
  • 查询3

我想做的是能够将 QueryList 的值解析成 Table.Combine 函数:

例如。 Table.Combine(#"QueryList")

从而允许动态合并查询

发生的事情是我收到一条错误消息:

Expression.Error:我们无法将值“Query1”转换为 Table 类型。 细节: 值=查询 1 类型=类型

更新: 我尝试了 Table.ToList 的变体,使用 { } 创建一个列表 TableFromlist,但都没有成功(通常错误抱怨无法从文本转换为列表或表格等。

提前感谢您的帮助。

【问题讨论】:

    标签: powerbi powerquery


    【解决方案1】:

    如果您的 QueryList 是 {Query1, Query2} 那么 Table.Combine(QueryList) 会起作用。

    显然,您的 QueryList 是 {"Query1", "Query2"}。

    因此必须将字符串转换为表格,这可以使用 Expression.Evaluate 完成。作为第二个参数,您必须提供包含所有可能查询的记录,因此对于 Query1、Query2、Query3,公式变为:

    = Table.Combine(List.Transform(QueryList, each Expression.Evaluate(_, [Query1 = Query1, Query2 = Query2, Query3 = Query3])))
    

    【讨论】:

    • 很抱歉现在才回复,这效果很好,让我找到了一个更加流畅和动态的解决方案。我为第二个参数创建了一个包含文本值的字段。文本值 = [Query1 = Query1, Query2 = Query2, Query3 = Query3],当然我将其应用于 Expression.Evaluate,它返回了一个记录列表,然后返回到您上面提出的解决方案...
    猜你喜欢
    • 1970-01-01
    • 2016-03-01
    • 2016-02-17
    • 1970-01-01
    • 2012-07-14
    • 2016-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多