背景
我正在构建一个用于Excel的Power BI插件(Power Query,Power Pivot和Power View)的简单仪表板,以获得Power BI的一些体验 . 仪表板用于呈现由顾问(即我自己)制作的简单时间报告 . 我想用于输入数据的格式在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
字段很简单 . 时间报告的日期 . Timecode
是报告的小时数"name" . 在通用软件中,这通常是项目代码或类似的,但我希望以客户为基础 . Duration
是一个浮点数,表示当天该时间码所花费的小时数 . Tags
列是有趣的部分:简化输入是希望它是(分号)分隔的字符串,但在为Power视图创建数据模型时不会这样做 .
我想要做的是一个包含所有标记的单独表,以及一个链接表,用于将标记连接到时间报告中的相应行 . 在Power视图报告中,我希望能够过滤标签上的时间报告,例如分析在 ProductA
或 Support
上花费的时间 .
问题
如何使用Excel的Power BI插件获取上述 Tags
之类的非规范化字段并将其替换为维度表和链接表?我如何得到以下三个表格:
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
尝试
通过选择Tags-column然后拆分,旋转和删除重复项(受this link启发,我已设法创建所有标记的列表,如:
Tags:
TagName
----------
Support
ProductA
ProductB
Development
但我无法理解如何将表格链接到彼此 . 请帮助我 .
1 回答
我想你有两个选择:
使用Power Query,添加Merge&Expand Column步骤将TimeReport加入LinkTable,然后加入TagsTable
使用Power Pivot,加载所有3个表,然后转到Diagram视图并 Build 它们之间的关系 . 使用"Hide from Client Tools"隐藏对用户毫无意义的列,例如标签识别
我更喜欢Power Query,因为功能更灵活,调试更容易 .