Страницы: 1
RSS
PowerPivot DAX кол-во уникальных пересечений по одному столбцу
 
Добрый день!
В качестве примера возьмем таблицу
XvalYval
Ch1x1
Ch1x2
Ch1x3
Ch2x2
Ch3x3
Ch3x1
Требуется создать такую структуру PowerPivot, чтобы на выходе В Excel можно было получить следующую таблицу
x1x2x3
x1 12
x21 1
x321
Пояснение - X1 совместно с X2 встречается только в 1 случае (Ch1)
X1 с X3 в двух случаях (Ch1,Ch3)
Пока пришел к тому, что исходную таблицу нужно 2 раза добавлять, иначе не понятно, как меру YVal и в строки и в столбцы кинуть.
Написал формулу xx:=CALCULATE(DISTINCTCOUNT(T2[XVal]);FILTER(T2;T2[YVal]=[YVal]))
результат совсем не как надо.
Может как то проще можно
Изменено: ihelp2002 - 06.08.2018 11:25:04
 
Доброе время суток.
Цитата
ihelp2002 написал:
проще можно
Интересно, на основании каких гипотез и знаний вы высказываете такое предположение?
Вариант.
P. S. ihelp в нике переводится как я помогаю?
Изменено: Андрей VG - 06.08.2018 12:07:55
 
Большое спасибо! Формула работает.
Только возникла проблема - на 10 значениях все хорошо, но когда в исходной таблице около 1000 строк - Excel умирает. не дождался ответа в течении 10 минут.
В идеале чтобы работало в адекватные сроки на 1-2 млн. строках
Вероятно, единственный вариант - делать исходник где для каждого XVals будут выводиться crossjoin  YVals
Изменено: ihelp2002 - 06.08.2018 13:19:30
 
Цитата
ihelp2002 написал:
В идеале чтобы работало в адекватные сроки на 1-2 млн. строках
Вот не уверен, что DAX это потянет, всё же он не для таких построений. Может Максим Зеленский что-то и придумает.
Цитата
ihelp2002 написал:
crossjoin  YVals
И что будет - 1 миллион * 1 миллион?
Насколько понимаю, задача о подсчёте для каждой пары товаров числа чеков в которых они встречаются и вывод в стиле сводной таблицы. Лучше делать на Power Query. Тестовая версия 119000 чеков по 8 товаров отработало построение развертки за 3 минуты.
 
Цитата
Андрей VG написал:
И что будет - 1 миллион * 1 миллион?
вот тоже не понимаю, явно товаров не 3 и не 10, неужто нужна таблица X на X? в ней нет никакого смысла...
Самые разные варианты баскет-анализа на DAX описаны здесь. Добавить вряд ли что-то могу.
В Power BI работает нормально, больше нигде не проверял:
Код
Мера 2 =
IF (
    SELECTEDVALUE ( Yvalues[Yval] ) = SELECTEDVALUE ( Yvalues2[Yval] );
    BLANK ();
    CALCULATE (
        DISTINCTCOUNT ( Tab2[Xval] );
        CALCULATETABLE (
            SUMMARIZE ( 'Tab2'; Tab2[Xval] );
            ALL ( Yvalues );
            USERELATIONSHIP ( 'Tab2'[Yval]; Yvalues2[Yval] )
        )
    )
)
F1 творит чудеса
 
вот такая схема
F1 творит чудеса
 
Цитата
Максим Зеленский написал:
SUMMARIZE ( 'Tab2'; Tab2[Xval] );
Максим, поясните, пожалуйста, а почему не VALUES/DISTINCT - быстрее?
 
Андрей VG, я, не долго думая, взял паттерн с одноименного сайта, не вникая глубоко. Всё равно предполагал что-то подобное, а тут бац - готовое решение.
Хотя вот тут Марко отвечает на похожий вопрос и про SUMMARIZE/VALUES, и про использование CALCULATETABLE в этой формуле тоже.
F1 творит чудеса
 
Максим, спасибо. Давно уже к первоисточникам не припадал.
 
Спасибо большое! Скопировал модель из Complete pattern.
на 10 млн. строк работает очень шустро (не больше 10 секунд на действие)
Тестирую 40 млн.
С Power Quary Не работал - не разобрался, как мне прикрутить к ней данные так, чтобы можно было выводить в сводную(как в модели Марко Руссо)
Страницы: 1
Наверх