Jack Finch
if [action] = "clicked" or [action] = "opened" THEN [user_id] END = user_id_events
if [action] = "clicked" or [action] = "opened" THEN [created_at (email_stat)] END <= DATEADD('second',[event_time],#1970-01-01#)
if [action] = "clicked" or [action] = "opened" THEN DATEADD('hour',72,[created_at (email_stat)]) END >= DATEADD('second',[event_time],#1970-01-01#)
условия у Вас правильные, и если сделать джойн с этими условиями, то результат — COUNTD(user_id) — будет верным. проблема только в том, что делать этот джойн (двух фактовых таблиц непонятного мне, но видимо существенного размера) будет движок Tableau Hyper — что вобщем-то неплохо, если Postgre достаточно быстро отдаст обе таблицы (только нужные колонки конечно) на сторону клиента. Можно делать и в Desktop’е, и в Prep’е. Я бы сделал на небольших кусках данных, посмотрел на производительность (время создания экстракта), а потом уже думал, как это масштабировать в production.