Вот еще один способ:
Я начинаю с таблицы с именем Table2 на листе Excel и использую ее в качестве источника.Это выглядит так:
Затем используйте PowerBI Получить данные , затем выберите Все > Excel и кнопку Connect , перейдите к файлу Excel, в котором есть таблица, которую я собираюсь использовать в качестве источника, выберите ее и нажмите Открыть .Затем я выбираю Table2 (имя таблицы, которую я хочу использовать) из таблиц, представленных для выбора, и нажимаю кнопку Edit .Это загружает Table2 как мой источник.
Вторая и третья строки в моем М-коде ниже (Source и Table2_Table) - это то, что генерируется из вышеприведенных шагов, и возвращает меня к таблице и загружает ее.Они будут отличаться для вас, в зависимости от вашего источника информации.Ваш исходный путь, информация о файле и имена таблиц будут другими.
let
Source = Excel.Workbook(File.Contents("mypath\myfile.xlsx"), null, true),
Table2_Table = Source{[Item="Table2",Kind="Table"]}[Data],
#"Generate Dates" = List.Generate(()=> Date.From(List.Min(Table2_Table[Date])), each _ <= Date.From(List.Max(Table2_Table[Date])), each Date.AddDays(DateTime.Date(_), 1)),
#"Converted to Table" = Table.FromList(#"Generate Dates", Splitter.SplitByNothing(), {"Date"}, null, ExtraValues.Error),
#"Merged Queries" = Table.NestedJoin(#"Converted to Table",{"Date"},Table2_Table,{"Date"},"Converted to Table",JoinKind.LeftOuter),
#"Expanded Converted to Table" = Table.ExpandTableColumn(#"Merged Queries", "Converted to Table", {"Quantity"}, {"Quantity"})
in
#"Expanded Converted to Table"
Я получаю эту таблицу в качестве вывода:
Который я могу затем использовать в PowerBI.Например, в такой таблице:
PS Я заметил, что при использовании этого в PowerQuery только из Excel и не изнутриPowerBI , мне нужно явно изменить тип полей даты, иначе слияние не будет работать правильно, а числа не появятся.Таким образом, если делать это только из Excel, а не из PowerBI, это изменение кода, похоже, сработает:
let
Source = Excel.CurrentWorkbook(){[Name="Table2"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Date", type date}}),
#"Generate Dates" = List.Generate(()=> Date.From(List.Min(#"Changed Type"[Date])), each _ <= Date.From(List.Max(#"Changed Type"[Date])), each Date.AddDays(DateTime.Date(_), 1)),
#"Converted to Table" = Table.FromList(#"Generate Dates", Splitter.SplitByNothing(), {"Date"}, null, ExtraValues.Error),
#"Changed Type1" = Table.TransformColumnTypes(#"Converted to Table",{{"Date", type date}}),
#"Merged Queries" = Table.NestedJoin(#"Changed Type1",{"Date"},#"Changed Type",{"Date"},"Converted to Table",JoinKind.LeftOuter),
#"Expanded Converted to Table" = Table.ExpandTableColumn(#"Merged Queries", "Converted to Table", {"Quantity"}, {"Quantity"})
in
#"Expanded Converted to Table"
Конечно, вероятно, не мешало бы явно назначать типы дат при работе в PowerBI.... на всякий случай.