Страницы: 1
RSS
В power BI вывести список товаров, которые не берет клиент
 
Коллеги, помогите, пожалуйста: в отчете power BI надо вывести список товаров, которые не берет какой-либо один клиент. Есть база в Excel с отгрузками на всех клиентов. Например, всего отгружено за месяц 300 позиций товаров, а один клиент взял только 100 позиций. Мне надо вывести список этих 200 позиций.

В примере надо при выборе "Покупатель 3" вывести список товаров: "Товар 1", "Товар 3".
Изменено: vikttur - 15.09.2021 08:53:15
 
Цитата
Екатерина И написал:
при выборе "Покупатель 3"
а где выбирать, если пишите про отчет PBI? Куда выводить и в каком виде? Таблица, одно значение, график?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
У меня рассчитана мера: "Количество наименований продукции = CALCULATE (DISTINCTCOUNT('Сводная'[Товар]))",

которую я вывожу в визуализацию "Матрица" с фильтрацией по покупателям. Таки образом мы видим, сколько наименований продукции взял каждый покупатель за определенный период. Мне нужно подтянуть в эту визуализацию "Количество наименований товара, которые не брал покупатель" с детализацией этой меры по номенклатуре.
Не знаю, как рассчитать эту меру(((
 

Екатерина И, а зачем CALCULATE()  в Вашей мере?

Код
UnoughtProdCount:=CALCULATE ( DISTINCTCOUNT ( 'Сводная'[Товар] ); ALL ( 'Сводная'[Покупатель] ) ) - DISTINCTCOUNT ( 'Сводная'[Товар] )

или

Код
UnoughtProdCount:=CALCULATE ( DISTINCTCOUNT ( 'Сводная'[Товар] ); ALL ( 'Сводная'[Покупатель] ) ) - [Количество наименований продукции]

UPD: мой косяк, нужен же список:) Момент.

UPD2:

Код
Непроданный товар:=
VAR AllProducts = CALCULATETABLE ( VALUES ( 'Сводная'[Товар] ); ALL ( 'Сводная'[Покупатель] ) ) 
VAR ProdWithSales = VALUES ( 'Сводная'[Товар] ) 
VAR ProdWithoutSales = EXCEPT ( AllProducts; ProdWithSales ) 
VAR Result = CONCATENATEX ( ProdWithoutSales; [Товар]; ", " ) 
RETURN Result

Изменено: surkenny - 15.09.2021 10:56:59
 
На самом деле мера у меня такая:
Количество наименований продукции = CALCULATE (DISTINCTCOUNT('Сводная'[Товар]),'Сводная'[Реализация/возвраты] = "Реализация")
поэтому CALCULATE), я удалила часть кода, но не все...
Использовала Ваш код, все получилось!!! Здорово! Большое спасибо!
 
вариант
 
mechanix 85, подскажите, пожалуйста, у функции GENERATEALL ссылка на таблицу, а у Вас в мере столбцы. У меня не получается так...
=COUNTROWS(FILTER(ADDCOLUMNS(GENERATEALL('покупатель','Товар'),"_1",SUMX(RELATEDTABLE('Таблица1'),CALCULATE(SUM('Таблица1'[Количество])))),[_1]=BLANK()))
Изменено: vikttur - 15.09.2021 15:20:05
 
Екатерина И, что именно не получается?
 
Цитата
Екатерина И написал:
вывести список товаров: "Товар 1", "Товар 3".
У меня получается только если создать дополнительную таблицу
 
azma, это то, что мне нужно! Требовалась именно таблица.

Уважаемые коллеги, спасибо вам большое за помощь!)
 
azma, скажите, пожалуйста, а если в моей 'Cводной' таблице 38 столбцов, как мне сделать объединение таблиц с помощью UNION?
Сводная таблица большая, а для вывода наименований товаров, которые не брал покупатель нужны только столбцы 'товар'  и 'покупатель.'

Вот формула, которую у меня не получается применить в моей модели:
Table = UNION(ADDCOLUMNS(EXCEPT(CROSSJOIN(VALUES('Сводная'[Товар]),VALUES('Сводная'[Покупатель])),SUMMARIZE('Сводная','Сводная'[Товар],'Сводная'[Покупатель])),"Количество",0),'Сводная')
 
Цитата
Екатерина И написал:
объединение таблиц с помощью UNION?
чтобы объединить нужно чтоб обе таблицы имели одинаковые кол-во столбцов и одинаковые название у этих столбцов.
скиньте пример может быть сможем помочь Вам.
попробуйте:
Код
tab = UNION (NATURALLEFTOUTERJOIN (EXCEPT (CROSSJOIN ( VALUES ( 'Сводная'[Товар] ), VALUES ( 'Сводная'[Покупатель] ) ), SUMMARIZE ( 'Сводная', 'Сводная'[Товар], 'Сводная'[Покупатель] )         ),         'Сводная'     ),     'Сводная' )
и можно ещё через PQ, посмотрите шаги и повторите их у себя
Изменено: azma - 16.09.2021 05:44:24
 
azma,Екатерина И,  а как же товар, который не продан ни одному клиенту?:) Нужен справочник товаров.
А по периодам аналитики нет? К примеру, товар1 продан клиенту1 в 2019. В 2021 он же, наверное, должен входить в список непроданных товаров:) Или каждый раз запрос на переформирование сводной делать?:)
 
azma, я прикрепила две таблицы: "Сводная" - это результат сведения данных в PQ. Может и не надо мне так делать, а загрузить все таблицы в Pbi, а там их уже связывать. Вторая таблица это формат выгрузки из 1С. Помогите, пожалуйста. Не могу разобраться.
 
surkenny, добрый день! В моей ситуации товар производится и хоть одному клиенту продается, потому что товар скоропортящийся. Но надо выводить таблицу с номенклатурой товаров по каждому клиенту, кто какой товар не берет.

таблицу формирую с использованием срезов по периоду, цеху производства и т.д....
Изменено: vikttur - 16.09.2021 11:31:17
 
Екатерина И, конечно аналитику нужно делать уже на DAX.
Для большей наглядности заменил все продажи у Клиент2 в феврале на январь.
В промежуточных итогах по клиенту показывается количество, при детализации до товара - просто пишется "не продан":

Код
ProdNotSoldCnt:=
VAR NotSoldCnt = COUNTROWS ( RELATEDTABLE ( 'Products' ) ) - [ProdSoldCnt] 
VAR NotSoldCntRes = IF ( NotSoldCnt > 0; NotSoldCnt ) 
VAR NotSold =  IF ( NotSoldCnt > 0; "Не продан" ) 
VAR Result = 
   IF ( 
      HASONEVALUE ( Products[Товар] ); 
      NotSold; 
      NotSoldCntRes 
   ) 
RETURN Result

 
surkenny, спасибо за помощь! Но еще проблема в том, что в мере
ProdNotSoldCnt
результат вычисления COUNTROWS ( RELATEDTABLE ( 'Products' ) ) это количество позиций товара за все время. У меня база за три года. И это количество не фильтруется срезом ни по дате, ни по цеху. А мне необходимо рассчитать сколько и каких позиций не брал определенный клиент относительно всей продукции, произведенной в ДАННОМ периоде.
 
Екатерина И, замените на
Код
CALCULATE ( DISTINCTCOUNT ( 'Sales'[Товар] ); ALL ( 'Customers'[Покупатель] ) )
 
surkenny, спасибо! Получилось!
Страницы: 1
Наверх