这应该是一个简单的问题。我是Power Query的新手。
我有一个报告表,有一列“查询”,这些列是我在工作簿中拥有的查询的名称。 我希望添加一列以计算查询中的行数。
我使用的公式是=Table.AddColumn(Source, "RowCount", each Table.RowCount([Query]))
我的报告表如下所示:
| Queries | RowCount |
| Qry Apple | |
| Qry Orang | |
但是我遇到了错误:
Expression.Error:我们无法将值“ Qry Apple”转换为Table。
详细信息:
Value = Qry Apple
Type = Type
有人知道如何解决吗?
谢谢!
答案 0 :(得分:0)
= Table.AddColumn(Source, "Row Count", each Table.RowCount(Expression.Evaluate([Query],#sections[Section1])))
似乎这是需要对PQ的结构进行随机模糊了解的事情之一。 Expression.Evaluate需要知道用于解析字符串的“环境”,并且看起来PQ中的表位于名为#sections的全局查询中的[Section1]记录中。
答案 1 :(得分:0)
我从 Chris Webb的BI博客中找到了解决方案: Expression.Evaluate() In Power Query/M。
基本上,我们需要使用Expression.Evaluate
才能将[Query]
列中的文本读取为表格。还要注意,您需要包括#shared
参数,以便它可以访问必要的环境。 (有关更多详细信息,请参阅链接的博客及其提供的参考。)
= Table.AddColumn(Source, "RowCount", each Table.RowCount(Expression.Evaluate([Query], #shared)))
答案 2 :(得分:0)
最后,经过一年的练习,找到了答案
我尝试按照建议使用Expression.Evaluate
,但无济于事,因此我认为该功能无法将文本正确转换为#table。我会得到纠正。
该解决方案确实使用了#sections
,非常感谢@Alexis Olson和@Wedge的出色创意!
我使用了Record.Field
函数将表作为表对象“获取”到列中,然后使用Table.RowCount
函数将其完成。为了清楚起见,我将它们分为两个步骤。
所以这里是
let
Source = Excel.CurrentWorkbook(),
MyTables = Source{[Name="MyTables"]}[Content],
GetTblObj = Table.AddColumn(MyTables, "MyTables", each Record.Field(#sections[Section1],[Query])),
RowCount = Table.AddColumn(GetTblObj, "RowCount", each Table.RowCount([MyTables]))
in
RowCount