Страницы: 1
RSS
Power BI. MIN и MAX дата по несколькими таблицам
 
Доброго дня.

Начинаю разбираться с Power BI и Dax.
Есть задача найти минимальную и максимальную дату среди колонок в нескольких таблицах (всего 6 таблиц).
Сам решил задачу следующим способом:
Код
VAR DATE_TABLE = DISTINCT(UNION(
    UNION(
        UNION(
            ALLNOBLANKROW('Table_1'[Дата]),
            ALLNOBLANKROW('Table_2'[Дата])
        ), 
        UNION(
            ALLNOBLANKROW('Table_3'[Дата]),
            ALLNOBLANKROW('Table_4'[Дата])
        )
    ), 
    UNION(
        ALLNOBLANKROW('Table_5'[Дата]),
        ALLNOBLANKROW('Table_6'[Дата]) 
    )
))

VAR FIRST_DATE = TOPN(1, DATE_TABLE, [Дата], ASC)
VAR LAST_DATE = TOPN(1, DATE_TABLE, [Дата], DESC)
Вроде работает, но решение кажется не оптимальным.

Есть ли решение через функции MIN и MAX?
 
bobroff,
Код
FIRST_DATE = MIN(DATE_TABLE[Дата])
LAST_DATE = MAX(DATE_TABLE[Дата])
 
Цитата
написал:
FIRST_DATE = MIN(DATE_TABLE[Дата])LAST_DATE = MAX(DATE_TABLE[Дата])
Я вот так пробовал посмотрев форумы, но не работает почему-то:


Изменено: bobroff - 08.08.2023 13:09:36
 
bobroff, Можно файл пример?
 
Цитата
написал:
Можно файл пример?
К сожалению не могу выложить, так как в нем корпоративная информация с данными.
По сути это 6 таблиц с данными, в каждой из которых есть колонка с датой.
 
создайте таблицу календарь CALENDARAUTO()  и в ней ищите мин и макс
 
Цитата
написал:
создайте таблицу календарь CALENDARAUTO()  и в ней ищите мин и макс
CALENDARAUTO() будет брать все даты из модели, а в модели к примеру есть данные пользователей с датами рождения и другими датами, которые в данный промежуток для расчета не должны попасть.
 
Код
MINX(DATE_TABLE, [Дата])
 
Цитата
написал:
MINX(DATE_TABLE, [Дата])
Спасибо! Работает


Я вот еще думаю можно ли как-то уйти от UNION в этой задаче и оптимальное ли это решение?
 
Цитата
написал:
этой задаче
А в чем заключается задача? Вы создаете календарь сцепкой из 6 столбцов с датами? Зачем такие мучения? создайте отдельную таблицу с календарем  
 
Цитата
написал:
А в чем заключается задача? Вы создаете календарь сцепкой из 6 столбцов с датами? Зачем такие мучения? создайте отдельную таблицу с календарем  
Есть база, в ней 10 таблиц в каждой из которых есть колонка с датой.

Календарь надо создать только по данным колонок с датами из 6 таблиц, соответственно для этого нужно найти максимальную и минимальную дату среди этих 6 таблиц.
 
Код
MINX (UNION('Таблица1','Таблица2','Таблица3'), [Дата])

Объединение можно сделать так, остальное все ок  
 
Цитата
написал:
Объединение можно сделать так, остальное все ок  
Спасибо
 
В плане "а как еще можно"
Код
=
var min1 = min(min(Table1[Date]), min(Table2[Date]))
var min2 = min(min(Table3[Date]), min(Table4[Date]))
var min3 = min(min(Table5[Date]), min(Table5[Date]))
var minmin = min(min(min1, min2), min3)
F1 творит чудеса
Страницы: 1
Наверх