powerbi - 填写缺失日期 Power BI
问题描述
我在 Power BI 中有一个表缺少某些日期,如下面的快照所示,其中 1 月 1 日没有订单(还有其他缺少的日期)。
我想为每个缺失的日期添加 5 条记录(每个BRAND一条),其中BRAND是a/b/c/d/e并且ORDERS和UNITS都是0,同时保持所有其他记录相同。我创建了一个日历表,并在两者之间创建了从 Date 到 SHIP_DATE 的关系,如下所示:
在查询编辑器中,我尝试使用 Right Join 合并这两个表以包含日历中的所有记录,希望它会在 1 月 1 日添加,但结果根本没有变化。
如果有人对如何解决此问题有任何想法,我将不胜感激。
解决方案
在查询编辑器中,您可以使用虚构值附加缺失日期的表格。
如果缺少的日期很少并且您都知道:
= Table.Combine({your_data,
#table(type table [SHIP_DATE = date, BRAND = text, ORDERS = number, UNITS = number],
{{#date(2019,1,1),"a",0,0},
{#date(2019,1,3),"b",0,0},
{#date(2019,1,4),"c",0,0},
{#date(2019,1,5),"d",0,0},
{#date(2019,1,6),"e",0,0}})})
或者,如果您希望自动捕捉丢失的日期:
let
Source = your_data,
Types = Table.TransformColumnTypes(Source,{{"SHIP_DATE", type date}, {"BRAND", type text}, {"ORDERS", Int64.Type}, {"UNITS", Int64.Type}}),
FactDates = Types[SHIP_DATE],
AllDates = List.Generate(()=>List.Min(FactDates), each _ <= List.Max(FactDates), each Date.AddDays(_,1)),
MissingDates = List.Difference(AllDates,FactDates),
ToTable = Table.FromList(MissingDates, Splitter.SplitByNothing()),
Index = Table.AddIndexColumn(ToTable, "i", 0, 1),
Brand = Table.AddColumn(Index, "BRAND", each {"a".."z"}{[i]}),
Removed = Table.RemoveColumns(Brand,{"i"}),
Renamed = Table.RenameColumns(Removed,{{"Column1", "SHIP_DATE"}}),
Types2 = Table.TransformColumnTypes(Renamed,{{"SHIP_DATE", type date}, {"BRAND", type text}}),
Appended = Table.Combine({Types, Types2}),
Replaced = Table.ReplaceValue(Appended,null,0,Replacer.ReplaceValue,{"ORDERS", "UNITS"}),
Sorted = Table.Sort(Replaced,{{"SHIP_DATE", Order.Ascending}})
in
Sorted
请记住,当缺失日期的数量小于或等于 26(英文字母中的字母数)时,此代码将正常工作。如果您希望丢失更多日期,只需将步骤Brand中的代码替换为如下所示:
Brand = Table.AddColumn(Index, "BRAND", each "_brand"&Text.From([i]))
推荐阅读
- python - 为同时存在的不同 Python 对象记录到不同的文件
- c - 如何将外部函数中的结构中的值打印到 main()
- ios - “Pods-Runner”目标具有传递依赖关系,包括静态链接的二进制文件:(.../ios/Flutter/Flutter.framework)
- python - 从数组中获取总和为X的数字列表
- css - 选择选项时如何在下拉菜单中设置不透明度?
- java - Java 可变数值文字
- odoo - 通过 sh 脚本安装后无法在浏览器 0.0.0.0:8069 中加载 Odoo 12
- python - 添加文件上传器后,其他按钮重定向到上传器
- android - 根据文本边界将 TextView 放置在容器的中心
- java - 如何删除 SAP Commerce / Hybris 中的 url 属性?