Страницы: 1
RSS
Сравнить каждую запись (record) со списком (list) Power Query
 
Здравствуйте, нужна помощь в составлении запроса в Power Query,
необходимо сравнить записи таблицы со списком значений, пример с описанием приложил
 
Сильно не вдумывался, может Вам подойдет интервальный поиск тут или тут или еще где-то было на форуме.
 
добрый
Код
let
    Source = Excel.CurrentWorkbook(){[Name="table"]}[Content],
    s = Excel.CurrentWorkbook(){[Name="list"]}[Content][список],
    a = Table.AddColumn(Source, "q", (x)=> if x[дата] <= s{0} then s{0} else s{1})
in
    a
 
Цитата
написал:
добрый
Код
    [URL=#]?[/URL]       1  2  3  4  5  6      let          Source = Excel.CurrentWorkbook(){[Name=  "table"  ]}[Content],          s = Excel.CurrentWorkbook(){[Name=  "list"  ]}[Content][список],          a = Table.AddColumn(Source,   "q"  , (x)=> if x[дата] <= s{0} then s{0} else s{1})    in          a   
 
немного не то, вы указали "если то" для 2 значений, а если их будет 40?
Изменено: papadulo - 25.11.2022 14:45:05
 
Вариант
 
Цитата
написал:
Вариант
какой хитрый подход, я бы не догадался, хорошо что есть такие тематические форумы, спасибо, то что надо
 
Вроде бы сработает только если дата из справочника будет в исходных данных.
Проверить можно, удалив строку "10.01.2022" из исходных данных.
Если даты всегда идут в ряд как в календаре, то вопросов нет  :)
Изменено: whateverlover - 25.11.2022 14:57:24
 
Цитата
написал:
Вроде бы сработает только если дата из справочника будет в исходных данных.
Проверить можно, удалив строку "10.01.2022" из исходных данных.
Если даты всегда идут в ряд как в календаре, то вопросов нет  
для моей конкретной задачи даты справочника всегда будут в промежутке исходных данных, так что самое то, быстро и универсально, лайк
 
вариант
Код
let
    srcTable = Excel.CurrentWorkbook(){[Name="table"]}[Content],
    srcTable_tableTransformColumnTypes = Table.TransformColumnTypes(srcTable, {{"дата", type date}}),

    listDates_Source = Excel.CurrentWorkbook(){[Name="list"]}[Content],
    listDates_tableTransformColumnTypes = Table.TransformColumnTypes(listDates_Source, {{"список", type date}}),
    listDates_tableToList = listDates_tableTransformColumnTypes[список],
    listDates_MaxDate = List.Max(srcTable_tableTransformColumnTypes[дата]),
    listDates_Combine = if List.Max(listDates_tableToList) < listDates_MaxDate then listDates_tableToList & { listDates_MaxDate } else listDates_tableToList,
    listDates_Buffer = List.Buffer(listDates_Combine),

    srcTable_tableToRows = Table.ToRows( srcTable_tableTransformColumnTypes ),

    srcTable_ListTransform =
        List.Transform(
            srcTable_tableToRows,
            (x) => [
                listSelect = List.Select(listDates_Buffer, (y) => y >= x{0}),
                listMin = List.Min(listSelect),
                result = x & { listMin }
            ][ result ]
        ),

    srcTable_TableFromRows =
        Table.FromRows(
            srcTable_ListTransform,
            { "дата", "значение", "список" }
        ),

    srcTable_tableTransformColumnTypes_Result =
        Table.TransformColumnTypes(
            srcTable_TableFromRows,
            {
                {"дата", type date},
                {"список", type date}
            }
        )
in
    srcTable_tableTransformColumnTypes_Result
Страницы: 1
Наверх