我正在使用 PowerQuery 和 Power Pivot 分析一些数据。我想根据来自多列的数据创建一个切片器。通常切片器与单个列绑定。
下表是我设计的一个简单示例,用于说明我想要做的事情。我想创建一个切片器,在 Excel 中或使用 VBA,这样我就可以按行政区(布鲁克林、曼哈顿等)对这些数据进行切片。如果每个员工都在一个且只有一个地点工作,那么这将很简单,但有些员工(史密斯和杰索普)在多个地点工作。
员工 | 布鲁克林 | 曼哈顿 | 布朗克斯 | 斯塔滕岛 | 皇后区 |
---|---|---|---|---|---|
玛丽希尔德斯 | 1 | ||||
布赖恩·琼斯 | 1 | ||||
约翰·史密斯 | 1 | 1 | |||
马丁·凯西 | 1 | ||||
伊芙琳·杰索普 | 1 | 1 |
我可以, 但真的不想,每个员工有多行,每行都与一个行政区绑定,但这是一个丑陋的解决方案,在我的实际分析中是不可取的,因为实际分析比上面的要复杂得多。提前谢谢!
编辑:我应该补充一点,我的分析已经使用了许多切片器,因此,尽管上述内容可能可以通过过滤器或其他机制来实现,但我宁愿保持与我所拥有的内容的一致性,以造福上述分析的消费者。
答案1
为了能够根据需要进行过滤,您需要增加行数,好消息是您可以在 power query 中执行此操作,以下是相关代码:
let
Source = Table1,
#"Unpivoted Columns" = Table.UnpivotOtherColumns(Source, {"Employee"}, "Attribute", "Value"),
#"Renamed Columns" = Table.RenameColumns(#"Unpivoted Columns",{{"Attribute", "location"}}),
#"Merged Queries" = Table.NestedJoin(#"Renamed Columns", {"Employee"}, #"Renamed Columns", {"Employee"}, "Renamed Columns", JoinKind.LeftOuter),
#"Expanded Renamed Columns" = Table.ExpandTableColumn(#"Merged Queries", "Renamed Columns", {"location"}, {"EmployeeLocations"})
in
#"Expanded Renamed Columns"
一些示例截图:
计数条目的更新:
要计算总数,您需要通过选择“添加到数据模型”选项来加载数据
现在您可以计算员工的“不同计数”,这将满足您的需要。
或者您也可以对位置执行相同操作来计算行总数,但遗憾的是没有办法同时正确计算两个总数。