Математическая таблица дат с несколькими датами

#tableau-api

#таблица-api

Вопрос:

У меня есть таблица политик с номером учетной записи, датами вступления в силу, отмены и истечения срока действия. Я хочу знать, как долго учетная запись имела активные политики для

Необработанная таблица

 id, account_id, effective_date, cancellation_date, expiration_date
1, a, 2020-01-01, null, 2020-06-01
2, b, 2020-02-01, null, 2020-07-01
3, b, 2020-03-01, null, 2020-08-01
4, a, 2020-04-01, null, 2020-09-01
5, b, 2020-04-01, 2020-08-15, 2020-09-01
  

Идеальный результат

 account_id, active_date, inactive_date, active_time
a, 2020-01-01, 2020-09-01, 9 months
b, 2020-02-01, 2020-08-15, 7 months 15 days
  

До сих пор я создал таблицу, в которой в качестве левого столбца указан account_id. И затем я должен
MIN(effective_date) получить активную дату первой политики.

Тогда у меня есть Policy_Inactive_Date = MIN(cancellation_date, expiration_date) . Но это дает мне время, когда срок действия первой политики истек или был отменен.

Такое ощущение, что мне нужно выполнить MAX(Policy_Inactive_Date), но это выдает ошибку.

Мне интересно, нужно ли сначала получить Policy_Inactive_Date на уровне политики, а затем получить максимальное значение на уровне учетной записи.

Ответ №1:

Сделайте это так

Предварительный просмотр результатов

active_dt поле, подобное этому

 {
    Fixed [account_id]: MIN([effective_date])
}
  

inactive_dt вот так

 {
    Fixed [account_id]:MAX(IF ISNULL(MIN([cancellation_date],[expiration_date])) then [expiration_date] else MIN([cancellation_date],[expiration_date]) END)
}
  

Комментарии:

1. Потрясающее спасибо. Я не знал об Fixed этом. Это решит многие мои проблемы!

Ответ №2:

Попробуйте MAX(MIN(cancellation_date, expiration_date))

Существует две формы MIN() — и две формы MAX() . С одним аргументом MIN() является функцией агрегирования, возвращающей наименьшее ненулевое значение этого аргумента для набора записей. С двумя аргументами MIN() вычисляет каждый аргумент и возвращает наименьшее из этих двух значений.