PowerQuery填写缺少的日期和数据

时间:2019-11-11 21:21:33

标签: powerquery

如何使PowerQuery到达:

  1. 生成缺少的日期

  2. 使用先前的最新值填充缺少的日期

所需的输入和输出概述如下:

输入

.astype(np.float)

输出

+------------+------+-------+
|DATE        | CUR  | RATE  |
+------------+------+-------+
| 01-01-2019 | EUR  | 0.7   |
| 01-01-2019 | USD  | 0.8   |
| 03-01-2019 | EUR  | 0.71  |
| 03-01-2019 | USD  | 0.81  |

1 个答案:

答案 0 :(得分:0)

尝试以下

(a)透视原始数据(b)创建从原始列表的最小值到最大值的所有日期(c)删除重复项(d)将缺失的日期附加到原始表中(e)使用fill ... down填充(f)毫无疑问

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"DATE", type number}, {"CUR", type text}, {"RATE", Int64.Type}}),
#"Pivoted Column" = Table.Pivot(#"Changed Type", List.Distinct(#"Changed Type"[CUR]), "CUR", "RATE", List.Sum),
List = Table.FromList(List.Difference({List.Min(#"Changed Type"[DATE])  .. List.Max(#"Changed Type"[DATE])},#"Changed Type"[DATE]), Splitter.SplitByNothing(), null,null),
#"Renamed Columns" = Table.RenameColumns(List,{{"Column1", "DATE"}}),
Combined= #"Pivoted Column" & #"Renamed Columns",
#"Sorted Rows" = Table.Sort(Combined,{{"DATE", Order.Ascending}}),
#"Filled Down" = Table.FillDown(#"Sorted Rows",{"EUR", "USD"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Filled Down",{{"DATE", type date}}),
#"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Changed Type1", {"DATE"}, "Attribute", "Value")
in #"Unpivoted Columns"