规范化权力查询中的csv字段(M)
背景
我正在Excel的Power BI插件(Power Query,Power Pivot和Power View)中构build一个简单的仪表板,以获得Power BI的一些经验。 仪表板用于呈现由顾问(即我自己)制作的简单时间报告。 我想用于input数据的格式是在Excel表格中,如下所示:
InputData: Date | Timecode | Duration[hrs] | Tags -----------|-----------|---------------|---------------------- 2016-02-01 | CustomerA | 1.2 | Support;ProductA 2016-02-01 | CustomerB | 0.3 | Support;ProductB 2016-02-02 | Internal | 4.2 | Development;ProductA
Date
字段很简单。 时间报告的date。 Timecode
是报告的小时数的“名称”。 在通常的软件中,这通常是一个项目代码或类似的,但我想保持在一个客户的基础上。 Duration
是一个浮点数,代表当天用于该时间码的小时数。 Tags
列是一个有趣的部分:简化input是希望它是一个(分号)分隔的string,但不会为Power视图创build数据模型时。
我试图做的是一个单独的表与所有的标签,以及一个链接表,将标签连接到时间报告相应的行。 在Power View报告中,我希望能够过滤标签上的时间报告,例如分析在ProductA
或Support
上花费的时间。
题
如何使用非标准化的字段(如上面的Tags
,并使用Excel的Power BI插件将其replace为维度表和链接表? 我如何结束以下三个表格:
TimeReport: Date | Timecode | Duration[hrs] | TimeReportID -----------|-----------|---------------|---------------------- 2016-02-01 | CustomerA | 1.2 | 1 2016-02-01 | CustomerB | 0.3 | 2 2016-02-02 | Internal | 4.2 | 3 LinkTable: TimeReportID | TagID -------------|-------- 1 | 1 1 | 2 2 | 1 2 | 3 3 | 4 3 | 2 TagsTable: TagID | TagName -------|---------- 1 | Support 2 | ProductA 3 | ProductB 4 | Development
尝试
通过挑选只有标签列,然后拆分,旋转和删除重复(从这个链接的启发,我设法创build所有标签的列表,如:
Tags: TagName ---------- Support ProductA ProductB Development
但我无法理解如何将表格连接到彼此。 请帮助我。
我想你有两个select:
- 使用Power Query,添加合并和展开列步骤以将TimeReport连接到LinkTable,然后添加TagsTable
- 使用Power Pivot,加载全部3个表格,然后进入图表视图并build立它们之间的关系。 使用“隐藏客户端工具”隐藏对用户无意义的列,例如TagID
我更喜欢Power Query,因为它的function更加灵活,debugging也更容易。