Страницы: 1
RSS
PQ - поиск по любому значению.
 
Доброго вечера.
Вопрос вроде простой, но пока не нашел ответа.
В PQ мне надо подставить значение, которое обозначало бы любое значение.

Пример.
Есть вот такой код:
Код
if [price] > 0 and [поставщик] = "Поставщик1" then 1 else 0

В какой-то момент может потребоваться, что мне нужен любой поставщик, а не конкретный, но при этом вместо "Поставщик1" мне надо указать какое-то значение. Конечно, можно просто убрать условие [поставщик] = "Поставщик1", но это замена кода, поэтому не слишком подходит.

Нужен именно вариант с подстановкой значения, которое обозначало бы  "любое вхождение"

Как-то вот так:
Код
if [price] > 0 and [поставщик] = Любой then 1 else 0
Надеюсь, понятно изъяснил.
 
Не знаю, как в PQ, а вообще для этих целей используются подстановочные символы:
? - один любой символ
* - любое количество любых символов.
 
Доброе время суток.
Цитата
Юрий М написал:
для этих целей используются подстановочные символы
Как это не прискорбно, Юрий, но нет в Power Query ни Like, ни регулярных выражений (уж сколько лет народ просит). Вариант Implementing A Basic LIKE/Wildcard Search Function In Power Query.
Для данного конкретного переключения можно воспользоваться параметрами в Power Query, как в примере. В прочем, можно это же сделать и с применением таблицы-параметров. В инете информация об этом есть, предложенный вариант тоже есть там же ;)  Денис, вы всё же пробуйте поиск - он полезный :)  Google, Yandex и прочие стараются, и Power Query не только что появился.
Изменено: Андрей VG - 18.02.2018 23:45:06 (поправил логическую ошибку)
 
Цитата
Андрей VG написал:
нет в Power Query ни Like, ни регулярных выражений...
Во, редиски! )
 
Андрей VG, это очень печально.

Придется плясать с бубном.

Благодарю за пример, буду думать. Может попроще получится придумать.
 
Денис, также вариант от Андрей VG можно реализовать не через параметр, а через таблицу на листе Excel с настройкой учитывать поставщика в формуле или нет. А далее тянете значение ячейки из таблицы в запрос и используете так же как в его примере.
На мой взгляд так оно удобнее.
Вот горшок пустой, он предмет простой...
 
PooHkrd, так я по сути так и делаю - на листе выбираю название поставщика, а потом подгружаю в запрос.
Только не до конца понял вашу идею.
Важный момент - я привел пример с поставщиками, но по факту у меня это может применяться и на категорию, то есть фильтрацию по любой категории, а там более 1000 вариантов, поэтому нет смысла всех перечислять.
 
Денис, имеется ввиду: создаете на листе таблицу "Список поставщиков, которые мне нужно выбрать", этот список подсовываете в функцию вместо списка contractorList из примера Андрея и пользуетесь. Если проводить аналогии, то это типа расширенного фильтра в excel можно представить.
 
Денис, а в чём проблема в понимании PooHkrd? Вас тоже сложно понять
Цитата
Денис написал:
делаю - на листе выбираю название поставщика
Выбираете где, что и как?
Вариант. Пусть есть именованная ячейка MyParameter получаем её значение в определение
Код
myParameter = Excel.CurrentWorkbook(){[Name="MyParameter"]}[Content]{0}[Column1]

Договариваемся, что если в этой ячейке слово Любой, то вывод функции будет 1 для всех значений contractor, иначе 1 только для тех contractor у которых значение равно значению этой ячейки. Перепишем мой несколько кривой вариант для такой реализации
Код
if (myParameter = "Любой" or myParameter = [contractor]) then 1 else 0

Далее, думаю, понятно, под каждый столбец таблицы создаём свою именованную ячейку с таким поведением.
Чтобы было поменьше коллизий с пониманием не стесняйтесь детальнее описывать постановку задачи.
 
Цитата
Андрей VG написал:
Чтобы было поменьше коллизий с пониманием не стесняйтесь детальнее описывать постановку задачи.
да мне казалось я в первом сообщении достаточно подробно описал. Просто надеялся, что есть какое-то волшебное слово, которое обозначает "Любое" значение, но ошибся...
Варианты я понял. Буду думать как лучше.

Всем спасибо.
 
Цитата
Денис написал:
да мне казалось я в первом сообщении достаточно подробно описал
Эх, если бы. В пределе, если вписывать варианты ручками в шаге запроса (а не как рассматривал задачу я - без правки запроса), то можно так.
Если единственного, всё как у вас
Код
if [price] > 0 and [поставщик] = "Поставщик1" then 1 else 0

любого
Код
if [price] > 0 and [поставщик] <> "Любой" then 1 else 0

Успехов.
 
Цитата
Денис написал:
В какой-то момент может потребоваться, что мне нужен любой поставщик
в какой? как определяется этот момент? От этого и пляшите. Power Query мысли не читает, ему нужно понять как-то, что этот момент наступил. Соответственно, либо вы делаете как Андрей VG описал с параметром в #9, либо придумываете другой параметр, под названием "МоментНаступил" со значением true/false, и тогда формула будет примерно такой:
Код
if [price] > 0 then
    (if МоментНаступил 
        then 1 
        else (if [поставщик] = НужныйПоставщик then 1 else 0)
    ) 
else 0
Изменено: Максим Зеленский - 20.02.2018 12:08:04
F1 творит чудеса
Страницы: 1
Читают тему
Наверх