powerbi - Power BI / Power Query - CSV标签到没有唯一ID的事实的维度?
问题描述
我有一个事实表
日期 | 姓名 | 标签 | 数量 |
---|---|---|---|
2020-01-23 | 购买12333 | 日常,化学家,健康 | 123.83 |
2020-01-22 | 购买12333 | 日常,食物 | 232.99 |
2020-01-23 | 购买 48321 | 日常,超市,健康 | 23.11 |
我想为标签列创建一个星型模式,以便我可以查看“每天”的所有记录(显示 3 条记录),然后选择食物(显示 1 条记录)或健康和日常(显示 2 条记录)。
我可以通过用逗号分隔并分配代理键来在电源查询中创建一个新表,但是当没有明显的唯一键(名称不能保证是唯一的)时,我还需要能够定位事实表。我可以做些什么来创建一个代理键来定位事实表?是否有基于事实表中的 3 个不同列(日期、名称和金额)的散列技术来生成唯一键?
解决方案
这更像是一片雪花,根据您关于您选择不分配代理键的评论,它可能会错过标记,但它可能仍然是您正在寻找的东西,或者至少可以帮助您到达那里。
然后我引用 Fact 表来创建一个名为 NamesAndTags 的新表,然后选择 ID 和 tags 列并删除其他列,然后使用它= Table.ExpandListColumn(Table.TransformColumns(#"Removed Other Columns", {{"tags", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "tags")
来获取:
然后我引用 IDsAndTags 表来创建一个我称之为标签的新表,然后我用它= Table.Distinct(Table.SelectColumns(Source,{"tags"}))
来获取:
对此:
通过将交叉过滤器方向更改为两者。
然后在 Power BI 中,我可以创建一个表和一个筛选器,我可以在其中执行此操作:
这是我的 IDsAndTags 的 M 代码:
let
Source = Fact,
#"Removed Other Columns" = Table.SelectColumns(Source,{"ID", "tags"}),
Custom1 = Table.ExpandListColumn(Table.TransformColumns(#"Removed Other Columns", {{"tags", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "tags"),
#"Changed Type" = Table.TransformColumnTypes(Custom1,{{"tags", type text}})
in
#"Changed Type"
这是我的标签 M 代码:
let
Source = IDsAndTags,
#"Removed Other Columns" = Table.Distinct(Table.SelectColumns(Source,{"tags"}))
in
#"Removed Other Columns"
推荐阅读
- r - R 如果滞后条件匹配,则用 NA 填充新列
- mysql - 错误:无法添加外键约束-
- java - Android DAO 添加查询“'@Query 不适用于字段”
- flutter - 是否可以在颤振引擎中的颤振引擎删除本机闪屏之前运行初始化代码
- ios - 识别哪个 UIImageView 被点击并在数组中获取它的索引
- elasticsearch - min_score 排除分数较高的文档
- javascript - 未捕获的错误:此浏览器不支持 WebGL
- openshift - Jolokia 端点在开放式换档中不通过弹簧靴执行器暴露
- javascript - JavaScript - 密码生成器(复选框)
- python-3.x - 我可以订阅 on_subscribe 回调吗?