背景: 现有文件数据,Test Data下有三个文件夹CN,EN,JP,每个文件夹下面有两个Excel文件命名为Actual,Plan
读取数据步骤:
Step1 - 打开PBI并连接到文件夹,点击【转换数据】进入Power Query界面
(可选) Step2 - 选择路径列,点击添加列>提取>选范围>提取路径中的Country信息
Step3 - 添加自定义列,如果源文件是Excel,写 each Excel.Workbook([Content],true) ;若源文件是CSV,写 each Csv.Document([Content],null,null,null,936)。
Step4 - 展开【提取数据】列后,选择Data列和文本范围(Country),删除其他列
Step5 - 展开Data列,然后将文本范围重命名为Country。
完。
附 Issue#1 - Plan Data 包含了今年一年的数据,Actual目前只有1-5 月的数据。 想用PowerBI 把Plan和Actual 放在一张表,并用Actual的数据替换Plan 的数据。(如果Actual 有6月的数据,刷新PBI后自动用Actual 6月的数据替换Plan的数据。。)
实现:
1 - 在Plan表查询Actual表,并添加自定义列将plan表Value 替换为Actual.Value ( each if [actual.Value1]=null then [Value1] else [actual.Value1] )
2 - 若表内有多个Value,用 and 连接多个条件
let 源 = Table.NestedJoin(plan, {"Year", "Month"}, actual, {"Year", "Month"}, "actual", JoinKind.LeftOuter), #"展开的“actual”" = Table.ExpandTableColumn(源, "actual", {"Value1"}, {"actual.Value1"}), 已添加自定义 = Table.AddColumn(#"展开的“actual”", "自定义", each if [actual.Value1]=null then [Value1] else [actual.Value1]), 删除的列 = Table.RemoveColumns(已添加自定义,{"Value1", "actual.Value1"}), 重命名的列 = Table.RenameColumns(删除的列,{{"自定义", "Value"}}) in 重命名的列