规范化权力查询中的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报告中,我希望能够过滤标签上的时间报告,例如分析在ProductASupport上花费的时间。

如何使用非标准化的字段(如上面的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:

  1. 使用Power Query,添加合并和展开列步骤以将TimeReport连接到LinkTable,然后添加TagsTable
  2. 使用Power Pivot,加载全部3个表格,然后进入图表视图并build立它们之间的关系。 使用“隐藏客户端工具”隐藏对用户无意义的列,例如TagID

我更喜欢Power Query,因为它的function更加灵活,debugging也更容易。