Мера новых клиентов в DAX

новый клиент = COUNTROWS(
 FILTER(VALUES(mysql_transactions_facts[userPhone]); 
 CALCULATE(DISTINCTCOUNT(mysql_transactions_facts[orderId]); 
 FILTER(ALL('calendar'); 
 'calendar'[Date]<MAX('calendar'[Date])
 )
 )>1 &&
 CALCULATE(COUNTROWS('mysql_transactions_facts'))=1
 )
 )

или так

COUNTROWS (
 FILTER (
 ADDCOLUMNS (
 VALUES ( mysql_transactions_facts[userPhone] ),
 "PreviousSales", CALCULATE (
 COUNTROWS ( mysql_transactions_facts),
 FILTER (
 ALL ( 'calendar' ),
 'calendar'[Date]< MIN ( 'calendar'[Date] )
 )
 )
 ),
 [PreviousSales] = 0
 )
)

а вот так вернувшийся клиент:

COUNTROWS (
 CALCULATETABLE (
 VALUES ( mysql_transactions_facts[userPhone] ),
 VALUES ( mysql_transactions_facts[userPhone]),
 FILTER (
 ALL ( 'calendar' ),
 'calendar'[Date]< MIN ( 'calendar'[Date] )
 )
 )
)

Как работаю отчеты в CubeLine

  1. С помощью PQ забираются данные из систем и приводятся в вид: Кампания, Дата, Показы, Клики, Расход, Система
  2. Также выкачивается GA: Система, Кампания, Дата, Сессии,Отказы и т.д. туда дальше
  3. Присоединяем таблички система друг к другу с помощью функции PQ — «добавить запросы»
  4. С помощью функции PQ — «добавить запросы» мы «присоединяем» таблички GA и контекста друг к другу. В данных GA в показах/кликах/расходах будет стоять null и наоборот.
  5. С помощью файла словаря к полученной табличке присоединяются различные сегменты: поиск/рся и т.д. Связываем с помощью функции PQ — «Слияние запросов», ключ указываем — кампания|система. Идет внутренние соединение (только совпадающие строки). Вообще, в файл словарь попадают название всех кампаний из систем, GA и удаляются дубликаты.
  6. Из этих данных строятся сводные таблички. Т.е. сводная таблица «схлопывает» те сегменты, что мы указали в словаре.