Первое свидание с продажами более 100 в TABLEAU - PullRequest
1 голос
/ 07 января 2020

У меня есть очень простой c плоский файл с продажами по дате и названиям продуктов. Мне нужно создать поле для первого дня продаж, где продажи превышают 100 единиц.

Я пытался {FIXED [Style Code]: MIN([Prod Cal Activity Date])}, но это только дает мне первый день в данных, когда существует код стиля. Я также пробовал IF ([Net Sales Units]>200) THEN {FIXED [Style Code]: MIN([Prod Cal Activity Date])}END, но это также дает мне первый день в данных, когда код стиля существует

ДАННЫЕ ДЕЙСТВУЮТ ДО ДАТЫ ПРОДАЖ

1 Ответ

1 голос
/ 08 января 2020

Можно использовать следующий расчет:

MIN(IF([Net Sales Units]>100) THEN [Prod Cal Activity Date] ELSE #2100-01-01# END)

Часть вычисления IF([Net Sales Units]>100) THEN [Prod Cal Activity Date] ELSE #2100-01-01# END преобразует дату в очень высокое значение (в примере 2100 год) для всех случаев, когда продажи были более 100 единиц. Как только это будет сделано, вы можете просто взять минимум расчетной даты, чтобы получить желаемый результат. Если вам нужно это по коду стиля, то вы можете добавить фиксированную функцию в начале.

Несколько способов еще больше упростить, если хотите. Они не меняют смысла.

  1. Вам не нужны круглые скобки вокруг логических выражений, как в C.
  2. Вы можете полностью исключить предложение ELSE. Выражение if будет по умолчанию нулевым в тех случаях, когда условие было ложным. Функции агрегирования, такие как MIN (), MAX (), SUM () и т. Д. c, автоматически игнорируют пустые значения, поэтому вам не нужно придумывать какую-либо будущую дату по умолчанию.

Итак MIN(IF [Net Sales Units] > 100 THEN [Prod Cal Activity Date] END в точности эквивалентно, для чтения нужно всего несколько символов.

Следующий возможный поворот имеет немного аналитического c значения, помимо простого нажатия клавиш.

Вам не нужно жестко кодировать выбор функции агрегирования в расчете. Вместо этого вы можете назвать свое вычисляемое поле как-то как Дата высокой активности продаж , определенное как просто

if [Net Sales Units] > 100 then [Prod Cal Activity Date] end

Это поле содержит только дату записи с высокими продажами, и ноль для записей с низкими продажами. Но если исключить функцию агрегирования из расчета, у вас будет больше возможностей использовать ее по-разному. Например, вы можете

  • Рассчитать самую раннюю (т. Е. Минимальную) верхнюю дату продаж, как было запрошено изначально
  • Рассчитать самую позднюю высокую дату продажи, используя Макс.
  • Фильтровать только даты с высокими продажами путем фильтрации специальных ненулевых значений
  • Рассчитайте количество дат высоких продаж с помощью COUNTD

Простые маленькие вычисления фильтрации, подобные этой, могут быть очень полезными - так называемые из-за встроенный оператор if эффективно отфильтровывает значения, которые не соответствуют условию. Для других записей все еще есть нулевые значения, но поскольку функции агрегирования игнорируют нулевые значения, вы можете считать их эффективными, отфильтрованными при вычислении.

...