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

时间:2016-03-05 20:12:58

标签: excel data-modeling powerbi

背景

我正在构建一个用于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是"名称"报告的小时数。在通用软件中,这通常是项目代码或类似的,但我希望以客户为基础。 Duration是一个浮点数,表示当天该时间码所花费的小时数。 Tags列是有趣的部分:简化输入是希望它是(分号)分隔的字符串,但在为Power视图创建数据模型时不会这样做。

我要做的是一个包含所有标记的单独表,以及一个链接表,用于将标记连接到时间报告中的相应行。在“电源视图”报告中,我希望能够过滤标签上的时间报告,例如分析在ProductASupport上花费的时间。

问题

如何使用上面的Tags这样的非规范化字段,并使用Power BI插件为Excel替换维度表和链接表?我如何最终得到以下三个表:

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 :(得分:0)

我认为你有两个选择:

  1. 使用Power Query,添加Merge&展开列步骤以将TimeReport加入LinkTable,然后加入TagsTable
  2. 使用Power Pivot,加载所有3个表,然后转到Diagram视图并建立它们之间的关系。使用"隐藏客户端工具"隐藏对用户无意义的列,例如标签识别
  3. 我更喜欢Power Query,因为功能更灵活,调试更容易。