Как получить среднее количество дней между несколькими датами в Таблице

Я использую Tableau, и у меня есть поле Sales_Order_Date. Мне нужно получить СРЕДНЕЕ количество дней между каждым заказом на продажу.

Пример: у меня 3 заказа

  1. 01/01/2014
  2. 20/01/2014
  3. 30/01/2014

Количество дней между порядком 1 и заказом 2 = 19 дней Количество дней между заказом 2 и заказом 3 = 10 дней

В среднем 29/2 = 14,5 дней

Как я могу это сделать, используя вычисляемое поле в Таблице для 000 дат?

Спасибо, Стефан.


person StefanHanotin    schedule 19.06.2014    source источник


Ответы (1)


window_avg(datediff('day',
                    lookup(min(Sales_Order_Date), -1),
                    min(Sales_Order_Date)))

предполагая, что ваше вычисляемое поле настроено на "вычисление с использованием" дискретного измерения DAY (Sales_Order_Date)

Начиная с самых сокровенных секций и прорабатывая:

  • функция lookup () вычисляет дату предыдущей записи в таблице
  • функция dateiff () вычисляет разницу между предыдущей датой и датой в текущей строке в днях
  • window_avg () вычисляет среднее значение всех интервалов между записанными датами

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

Более ранняя версия этого anwser также использовала вызов iif (), чтобы избежать вызова lookup () для первой строки, поскольку в этом случае предыдущая строка отсутствует. Это избыточно, потому что большинство функций Tableau изящно обрабатывают нулевые данные, игнорируя их, что и имеет здесь смысл.

person Alex Blakemore    schedule 19.06.2014
comment
Спасибо огромное, Алекс, это очень полезное объяснение. То, как вы это сломали, мне очень помогло. - person StefanHanotin; 23.06.2014
comment
Функцию можно еще немного упростить. Iif () является избыточным и может быть удален. Lookup () возвращает значение NULL, если для данного смещения нет строки, а функции агрегирования таблиц игнорируют значения NULL. Следует проверить с помощью теста, хотя - person Alex Blakemore; 23.06.2014