Страницы: 1
RSS
PQ развернуть приджоинную таблицу при условии максимальной даты
 
Добрый день. Задача развернуть таблицу при условии, что колонка КО|дата имеет максимальную дату
Вручную добавил ДАТА - максимальная дата и через ключи ВПРом подтянул поле нужное значение  КО|номер
Изменено: mechanix 85 - 19.05.2022 12:36:39
 
mechanix 85, сразу не разобраться)
В итоговой таблице должно быть заголовки+31 строка? Правильно?

ps/
Может предварительно подготовить таблицу
Код
// Таблица1 (2)
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
    #"Измененный тип" = Table.TransformColumnTypes(Источник,{{"Накладная|Номер", type text}, {"Товар|Код", type text}, {"КО|дата", type date}, {"КО|номер", type text}}),
    #"Добавлен индекс" = Table.AddIndexColumn(#"Измененный тип", "Индекс", 1, 1, Int64.Type),
    #"Сортированные строки" = Table.Sort(#"Добавлен индекс",{{"КО|номер", Order.Ascending}}),
    #"Grouped Rows" = Table.Group(#"Сортированные строки", {"Накладная|Номер", "Товар|Код"}, {{"Количество", each Table.LastN(_,1)  }}),
    #"Expanded {0}" = Table.ExpandTableColumn(#"Grouped Rows", "Количество", {"КО|дата", "КО|номер"})
in
    #"Expanded {0}"
Изменено: Михаил Л - 19.05.2022 12:17:52
 
Цитата
Михаил Л написал:
В итоговой таблице должно быть заголовки+31 строка? Правильно?

нет, должна и остаться 31 строка с первой таблицы. перевложил файл. Где ИСТИНА, то и должны оставить в результате

не хочется мне группировать предварительно, т.к. таблица, которую я джоинить буду условно 1М строк, а нужных данных порядка 1000
 
mechanix 85, так нужно?
Код
let
  data2 = Excel.CurrentWorkbook(){[ Name = "Таблица2" ]}[Content],
  typed1 = Table.TransformColumnTypes ( data2, { { "КО|дата", type date }, { "Накладная|Номер", type text }, { "Товар|Код", type text } } ),
  group = Table.Group (
    typed1,
    { "Накладная|Номер", "Товар|Код" },
    {
      { "rec", ( t ) => Record.RemoveFields ( Table.Max ( t, "КО|дата" ), { "Накладная|Номер", "Товар|Код" } ) },
      { "Накладная|Товар", ( t ) => t[#"Накладная|Номер"]{0} & "|" & t[#"Товар|Код"]{0} }
    }
  ),
  toRec = Record.FromList ( group[rec], group[#"Накладная|Товар"] ),

  data1 = Excel.CurrentWorkbook(){[ Name = "Таблица1" ]}[Content],
  typed2 = Table.TransformColumnTypes ( data1, { { "№", Int64.Type }, { "Дата операции исх", type datetime }, { "Счет №", Int64.Type } } ),
  delClmn = Table.RemoveColumns ( typed2, { "Индекс" }, MissingField.Ignore ),
  addRec = Table.AddColumn ( delClmn, "rec", each Record.FieldOrDefault ( toRec, [#"Накладная|Номер"] & "|" & [#"Товар|Код"], null ) ),
  expand = Table.ExpandRecordColumn ( addRec, "rec", { "КО|дата", "КО|номер" }, { "КО|дата", "КО|номер" } )
in
  expand
 
surkenny, так, но это мы изначально "причесываем" таблицу. нельзя ли уже после джоина фильтрануть таблицу 2?
 
mechanix 85, мне кажется, join 1M строк будет гораздо медленнее :)
 
surkenny, ОК. буду проверять. спасибо!
 
Цитата
mechanix 85 написал:
развернуть приджоинную таблицу при условии максимальной даты
а нормального слова вместо приджоинную  не нашлось?
По вопросам из тем форума, личку не читаю.
Страницы: 1
Читают тему (гостей: 1)
Наверх