我是PowerQuery的新手,我有一个表,该表本质上是那几天内的日期和小时的矩阵:第一列保存每个日期,其余各列则标记为1到24。示例如下:< / p>
Date H1 H2 H3 H4 ...
---- -- -- -- --
Jan 1
Jan 2
Jan 3
...
这存储在一个很大的Excel文件中,因此我希望能够简单地查询该文件并提取数据的子集。一个例子是每年的平均小时数。在SQL中,这将由“ SELECT YEAR(Date),AVG(H1),AVG(H2),...来自源表GROUPBY YEAR(Date)”表示。但是,在PowerQuery中,您似乎只能使用GROUPBY来生成具有分组结果的新列,因此在这种情况下必须重复操作x24,例如,如果我有几秒钟的数据,则必须重复执行更多操作(公平地说,如果您不考虑脚本解决方案,则还必须在SQL查询中输入每一列)。是否有一种更简单的方法来生成我想要的表(基本上将每一列折叠到其平均值),还是我需要手动添加每一列?
答案 0 :(得分:0)
您可以取消透视小时列,然后只需要按年份和未透视属性列进行分组。
我对您的数据制作了一个样本表,并将其加载到功率查询中。我将“日期”列转换为“仅年”,将“日期”列的“未透视的其他列”转换为“年”,然后在取消透视后按“日期和小时”列进行了分组。结果看起来像这样。
如果您想在电源查询之内或之外进行查询,则当然可以取消数据。这就是电源查询中的代码,但是它们都是用普通菜单选项创建的,而不是手工编写的。
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Extracted Year" = Table.TransformColumns(Source,{{"Date", Date.Year, Int64.Type}}),
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Extracted Year", {"Date"}, "Hour", "Value"),
#"Grouped Rows" = Table.Group(#"Unpivoted Other Columns", {"Date", "Hour"}, {{"Average", each List.Average([Value]), type number}})
in
#"Grouped Rows"