#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() вычисляет каждый аргумент и возвращает наименьшее из этих двух значений.