2015-06-01 1 views
1

Я пытаюсь создать пользовательский запрос в Tableau для использования в BigQuery Google. Цель состоит в том, чтобы иметь параметр offset в таблице, который изменяет смещения, используемые в предложении WHERE, основанном на дате.Невозможно использовать вычисленное смещение в функции DATE_ADD BigQuery

В Tableau это будет выглядеть следующим образом:

SELECT 
DATE_ADD(UTC_USEC_TO_MONTH(CURRENT_DATE()),<Parameters.Offset>-1,"MONTH") as month_index, 
COUNT(DISTINCT user_id, 1000000) as distinct_count 
    FROM 
[Orders] 
    WHERE 
order_date >= DATE_ADD(UTC_USEC_TO_MONTH(CURRENT_DATE()),<Parameters.Offset>-12,"MONTH") 
    AND 
order_date < DATE_ADD(UTC_USEC_TO_MONTH(CURRENT_DATE()),<Parameters.Offset>-1,"MONTH") 

Однако BigQuery всегда возвращает ошибку:

Error: DATE_ADD 2nd argument must have INT32 type. 

Когда я пытаюсь тот же запрос в редакторе BigQuery с помощью простых арифметических действий он терпит неудачу с та же ошибка.

SELECT 
DATE_ADD(UTC_USEC_TO_MONTH(CURRENT_DATE()),5-3,"MONTH") as month_index, 
    FROM [Orders] 

Любое обходное решение для этого? Кажется, мой единственный вариант - сделать несколько смещений в Tableau.

Спасибо за помощь!

+0

Это не связано с отсутствием функциональности часового пояса. Мы находимся за 2 часа до UTC летом, а всего 1 - зимой. – Wouter

ответ

2

Я признаю, что это дыра в функциональности DATE_ADD. Он может быть исправлен, но потребуется некоторое время до тех пор, пока исправление не будет завершено в производство.

+0

Спасибо Моше. Можем ли мы следовать этому? – Wouter

+0

Пожалуйста, введите этот вопрос на https://code.google.com/p/google-bigquery/, и я приму его там. –

+0

Хорошо, введено как вопрос 254: https://code.google.com/p/google-bigquery/issues/detail?id=254 – Wouter

1

Это возможное обходное решение. Кажется, что это работает, если первый аргумент DATE_ADD является строкой. Затем вы можете усечь результат на границу месяца и преобразовать его из метки времени в строку.

Смежные вопросы