Страницы: 1
RSS
Ссылка на ячейки в мерах DAX Power Pivot/Power BI, Как ссылаться на данные в ячейках при построении/написании мер
 
День добрый
Пытаюсь сделать аналог функции СУММЕСЛИМН в Power BI. Для этого использую меру CALCULATE таким вот образом:
Код
KPI 1 Факт = CALCULATE(SUMX('Sales_ETM';[Себестоимость_(81)]);'Sales_ETM'[Класс(55)]<>"Ц";'Sales_ETM'[Месяц]="9";Sales_ETM[ТМ]="Петров П.")

Загвоздка у меня в последнем моменте, где надо указать менеджера. В случае когда я прописываю фио конкретного менеджера, то все работает

Но как туда прописать ссылку на фамилию менеджера, в случае, если у меня там целый отдел и KPI надо посчитать на каждого?

 
Предполагаю, что нужно создать таблицу менеджеров и связать её с таблицей продаж. Но для точного диагноза нужна ваша модель, которую нужно выложить
Изменено: Sergey Chernichenko - 29.09.2022 14:18:03
 
У меня слишком объемный массив данных и его сюда не выложить
А как должна выглядеть таблица менеджеров?
Потому что у меня две таблицы - одна с планами (соотвественно там менеджеры все есть) и с фактом продаж (там тоже все по менеджерам расписно)
Но планы у меня нелинейные. То есть в KPI засчитываются не все продажи валом. А только по некоторым категориям. Собственно это я и хочу посчитать мерой
 
Вот смоделировал ситуацию в Экселе  
 
Цитата
Иван написал:
Вот смоделировал ситуацию в Экселе
А сразу добавить все таблицы в модель данных, создать связи?
Или Вы хотите, чтобы за Вас мы это сделали?

P.S. После фразы "Ссылка на ячейки в мерах DAX" хочется отправить ТС хоть как-то изучить модели данных :) НЕТ ЯЧЕЕК! ВООБЩЕ! :) Вообще к конкретной строке (по порядковому номеру) обратиться нельзя, есть только столбцы.

P.S.S. Вообще ничего сложного в Ваших вычислениях нет. Там не нужно даже "указывать" менеджера. DAX прекрасно вычисляет выражение в контексте фильтра текущих строки/столбца без изменения контекста в CALCULATE.
Создайте справочник менеджеров.
Изменено: surkenny - 29.09.2022 16:17:02
 
я только третий день как пытаюсь разобраться в Power BI и по этому очень многое мне просто не знакомо.
Цитата
А сразу добавить все таблицы в модель данных, создать связи?
Или Вы хотите, чтобы за Вас мы это сделали?
мне бы хотелось, что бы вы мне объяснили как это делать. Когда я начинаю делать связи, то он мне выкидывает предупреждение, что связь многое со многим и я не понимаю что он от меня хочет в этом случае. Так же как, что потом как этой связью пользоваться в данном контексте
Цитата
P.S. После фразы "Ссылка на ячейки в мерах DAX" хочется отправить ТС хоть как-то изучить модели данных НЕТ ЯЧЕЕК! ВООБЩЕ! Вообще к конкретной строке (по порядковому номеру) обратиться нельзя, есть только столбцы.
я понимаю, что там нет ячеек. Но как описать задачу тоже не могу сказать. По этому описал так, как бы я это делал в экселе.

Цитата
P.S.S. Вообще ничего сложного в Ваших вычислениях нет. Там не нужно даже "указывать" менеджера. DAX прекрасно вычисляет выражение в контексте фильтра текущих строки/столбца без изменения контекста в CALCULATE.
Создайте справочник менеджеров.
что за справочник менеджеров?

В интернете я нашел много разных примеров как настраивать BI, но не нашел урока, как делать вычисления с условиями, типа СУММЕСЛИМН со ссылками на разные условия
 
Иван, есть 2 варианта:
1. Решить Вашу задачу платно.
2. Вам купить книгу Феррари/Руссо и прочитать хотя бы первые 100 страниц.
Второй вариант плох тем, что тратит Ваше время. Зато не будете обращаться по простейшим вопросам в дальнейшем :)
Первый вариант решит Вашу задачу сразу. Но. Во-первых, моя цена (не знаю, как у коллег) будет не менее 1000. И Вы, скорее всего, мало чему научитесь. Либо с пояснениями это выйдет еще дороже.
Изменено: surkenny - 29.09.2022 18:41:50
 
Цитата
1. Решить Вашу задачу платно.
Моя задача разобраться в процессе всеми доступными способами, в том числе при помощи коллег из форума, а не решить конкретный пример. Так что первый вариант мне тут погоды не сделает.
Цитата
2. Вам купить книгу Феррари/Руссо и прочитать хотя бы первые 100 страниц.
Книгу скачал. Спасибо. Буду разбираться.
 
Цитата
написал:
Вообще к конкретной строке (по порядковому номеру) обратиться нельзя, есть только столбцы
Ну не совсем так, TOPNSKIP + SELECTCOLUMNS позволят обратиться к конкретной записи в строке и столбце
 
Цитата
написал:
Моя задача разобраться в процессе всеми доступными способами,
загляните сюда
https://biprosto.ru/dax/all.html#a3

Для изучения поможет, есть примеры похожие на вашу задачу
 
Цитата
DrillPipe написал:
позволят обратиться к конкретной записи в строке и столбце
можно подробнее, как это может сработать? Столбец понятно, указали  и работаем с ним (собственно, только со столбцами в DAX и работаем). А как выбрать значение к примеру из 10-ой строки, если в таблице нет порядковых индексов?
 
Это код позволяет выбрать 4 строку в таблице Customer
Пропускает 3 строки и выбирает 1 из указанной таблице
Только порядок строк будет зависеть от сортировки столбцов

Можете проверить на сервисе https://dax.do/

Код
EVALUATE
SELECTCOLUMNS (    TOPNSKIP ( 1, 3, Customer, Customer[Company Name], ASC ),    "@Company Name", Customer[Name])

Изменено: DrillPipe - 30.09.2022 22:14:52
 
DrillPipe, а о какой сортировке речь?
В PBI и Excel данные загружаются в модель в непредсказуемом порядке. Полагаю, что тут сам движок просто их как-то располагает по своему усмотрению. Конечно, там есть логика и, наверное, можно это предугадать, но как бы зачем :)
Даже если движок где-то хранит строки в определенном порядке, нам незачем обращаться к конкретной строке, так как мы заранее не знаем, что там будет находиться.

А Вы, наверное, говорите о какой-то отсортированной запросом таблице. То есть мы из данных уже получили какую-то таблицу, ее как-то отсортировали и можем уже, если прямо нужно, вывести четвертую строку :)
И да, при выводе части данных в визуализацию PBI во внутреннем запросе будет использовать эту функцию для вывода только части строк.
Но это совсем не про ячейки. И вряд ли это сейчас будет полезно для ТС :)

P.S. Сам ни разу не использовал TOPNSKIP. Думаю, что все используют TOPN для подобных целей.
Изменено: surkenny - 01.10.2022 02:04:27
 
Цитата
написал:
ее как-то отсортировали
TOPNSKIP ( <Rows>, <Skip>, <Table> [, <OrderBy_Expression> [, [<Order>] [, <OrderBy_Expression> [, [<Order>] [, … ] ] ] ] ] )

не обязательные аргументы отвечают за сортировку таблицы, и потом уже фильтрует данные.

Цитата
Но это совсем не про ячейки

Значение на пересечении одного столбца и одной строки будет единственным, а единственное значение, которое вернет выражение DAX, по дефолту становиться скалярным.
Скалярное значение можно использовать в сравнениях со знаком "=", в то время как табличное выдаст ошибку.

Такое выражение выполниться без ошибки
Код
EVALUATE
VAR num = SELECTCOLUMNS (TOPNSKIP ( 1, 3, Customer),"@CustomerKey", Customer[CustomerKey])

RETURN
CALCULATETABLE(Customer,ALL (Customer), Customer[CustomerKey] = num)

А такое нет, так как вернет таблицу из 2-х строк
Код
EVALUATE
VAR num = SELECTCOLUMNS (TOPNSKIP ( 2, 3, Customer),"@CustomerKey", Customer[CustomerKey])

RETURN
CALCULATETABLE(Customer,ALL (Customer), Customer[CustomerKey] = num)

PS
Понятно, что название темы не соответсвует задачи которую пытается решить ТС в силу отсутствия заниий  работы с табличными выражениями.

Но если мы хотим получить конкретное значение на пересечении столбца и строки - то DAX это позволяет сделать.
Не эффективно, с пожиранием памяти и времени
Изменено: DrillPipe - 01.10.2022 12:08:33
 
Спасибо, разобрался )
Немного подучил матчасть и решил все посредством связей и срезов
Просто сунулся туда, где вообще ни разу не был, вот и элементарные вопросы пока что пытаюсь освоить
Страницы: 1
Наверх