将值的动态列表传递到 Table.Combine

Posted

技术标签:

【中文标题】将值的动态列表传递到 Table.Combine【英文标题】:Passing a Dynamic List of Values into 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,但都没有成功(通常错误抱怨无法从文本转换为列表或表格等。

提前感谢您的帮助。

【问题讨论】:

【参考方案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,它返回了一个记录列表,然后返回到您上面提出的解决方案...

以上是关于将值的动态列表传递到 Table.Combine的主要内容,如果未能解决你的问题,请参考以下文章

如何将值从模板传递到 ts 函数

如何将值从表单传递到数据表

Informatica 是不是可以将值从 informatica 映射动态传递到 oracle 中的视图

如何将值列表传递到 json+sparksql 中的 rdd

如何在 iOS 中使用 WKWebView 将值动态传递到 iFrame

将值列表从 Python 传递到 SQL 查询的 IN 子句