Страницы: 1
RSS
Фильтрация столбца определяемого параметром, Необходим найти способ задать столбец для фильтрации параметром.
 
Добрый день!
Давненько бьюсь над задачкой:
- есть 2 типа счетов из 1С в формате .xlsx, из которые с помощью PQ тянется нормализованная таблица с арт., наименованием, и пр. данными. Но если в одном нужное поле находится в 3-м столбце, то во втором счете данные в 5-ом столбце. Есть ли возможность передать столбец параметром в запись:
Код
= Table.SelectRows(#"Столбец расширенной таблицы1", each not List.ContainsAny({null, ""}, {[Column5]}))
т.е. вместо [Column5] задать параметр, который будет вводиться пользователем?
Стандартный (для меня) метод формата List{0} не срабатывает, что понятно вроде как понятно, PQ ругается на несоответствие типов.
есть возможность реализовать такой метод?

P.S.: Вообще уже подумываю над тем, чтобы снова вернуться к идее спарсить основные данные VBA, но все же хочется попробовать сделать именно так)
Изменено: Станислав Воротынцев - 20.11.2023 15:45:59
 
Станислав Воротынцев, вы хотите имя столбца как параметр передавать, чтобы получить его содержимое? Record.Field(_, parameter) либо Record.FieldOrDefault(_, parameter, default_value).
Или, если по номеру надо, Record.FieldValues(_){3}
Изменено: AlienSx - 20.11.2023 15:48:49
Пришелец-прораб.
 
да, все верно, в зависимости от типа счета, столбец по которому происходит фильтрация меняется, поэтому хочу инициировать столбец параметром от пользователя.
Идея в том, что в зависимости от типа счета, поле "Артикул" может находиться либо в 3-м, либо в 5-м столбце, все остальные агрегации в запросе одни и те же. Пока я делаю это в ручную, но хочется автоматизировать этот процесс.
Пока тестирую Ваше предложении, но если честно все равно пока получаю ошибку, возможно не верно передаю параметры в функцию.
Прошу прощения, но я пока новичок в pq не совсем понимаю, что нужно передать в параметр record.  
Изменено: Станислав Воротынцев - 20.11.2023 16:27:20
 
фильтруем по 5-му слева столбцу (за номером 4 и с названием Column5)
Код
[
    data = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    f_by_name = Table.SelectRows(data, (x) => not List.Contains({"", null}, Record.Field(x, "Column5"))),
    f_by_num = Table.SelectRows(data, (x) => not List.Contains({"", null}, Record.FieldValues(x){4}))
]

результат одинаковый, т.к. фильтруем содержимое одной и той же колонки
Изменено: AlienSx - 20.11.2023 16:41:18 (картинка)
Пришелец-прораб.
 
СУПЕР! Большое спасибо!
Это то что нужно, я вначале не понял, как столбец передать, спасибо за пример!)
Страницы: 1
Наверх