首页 文章

规范化电源查询中的csv字段(M)

提问于
浏览
1

背景

我正在构建一个用于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视图报告中,我希望能够过滤标签上的时间报告,例如分析在 ProductASupport 上花费的时间 .

问题

如何使用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 回答

  • 0

    我想你有两个选择:

    • 使用Power Query,添加Merge&Expand Column步骤将TimeReport加入LinkTable,然后加入TagsTable

    • 使用Power Pivot,加载所有3个表,然后转到Diagram视图并 Build 它们之间的关系 . 使用"Hide from Client Tools"隐藏对用户毫无意义的列,例如标签识别

    我更喜欢Power Query,因为功能更灵活,调试更容易 .

相关问题