Таблица Google Big Query Flatten и использование функции table_range

Кто-нибудь знает, как использовать несколько функций FLATTEN и Table_date_range одновременно? Теперь я могу получить данные только за один день, но я хотел бы иметь все доступные данные. Есть ли способ сделать это?

select 
Date,COUNT(DISTINCT FULLVISITORID),hits.product.v2ProductCategory
FROM FLATTEN((FLATTEN (table, hits.product.v2ProductCategory)) ,customDimensions.value)
group by Date
,hits.product.v2ProductCategory

Спасибо


person Rachel    schedule 10.01.2017    source источник


Ответы (2)


Попробуйте ниже (не проверено)

SELECT 
  DATE,
  COUNT(DISTINCT FULLVISITORID),
  hits.product.v2ProductCategory
FROM FLATTEN(FLATTEN (
  (SELECT * 
  FROM TABLE_DATE_RANGE([aaprod-20160309:112099209.ga_sessions_],
        TIMESTAMP('2016-07-25'),
        TIMESTAMP('2016-07-27'))
  ), hits.product.v2ProductCategory), customDimensions.value
)
GROUP BY 
  DATE, 
  hits.product.v2ProductCategory
person Mikhail Berlyant    schedule 10.01.2017
comment
Большое спасибо Михаил. У меня это работает в большом запросе Google. Однако, когда я поместил запрос в Tableau, я получил эту ошибку Syntax error: Expected ] but got : at [1:599] . Думаю, мне нужно использовать стандартный sql, а не устаревший sql, если я хочу поместить запрос в Tableau. - person Rachel; 10.01.2017
comment
Стандартный SQL — предпочтительный диалект для взаимодействия с BigQuery. См. также страницу поддержки Tableau для BigQuery и стандартный справочник по SQL. - person Elliott Brossard; 10.01.2017
comment
полностью согласен с Эллиоттом. Между тем, если есть конкретный вопрос, касающийся функции Legacy SQL, я думаю, что все же имеет смысл дать прямой ответ. Всякий раз, когда контекст вопроса не ясен / недоступен - как это было изначально с этим вопросом - просто рекомендация перейти на стандартный SQL не имеет для меня особого смысла - вот почему я этого не сделал. Но все же - полностью согласен с Эллиоттом и его комментарием выше! Стандартный SQL является предпочтительным способом (по сравнению с устаревшим) для работы с :o)BigQuery. - person Mikhail Berlyant; 11.01.2017

Вместо этого вы должны использовать стандартный SQL. Например,

#standardSQL
SELECT
  Date,
  COUNT(DISTINCT FULLVISITORID),
  product.v2ProductCategory,
  customDimension.value
FROM `aaprod-20160309.112099209.ga_sessions_*` AS t
  CROSS JOIN UNNEST(hits) AS hit
  CROSS JOIN UNNEST(t.customDimensions) AS customDimension
  CROSS JOIN UNNEST(hit.product) AS product
GROUP BY 1, 3, 4;

Различия между устаревшим и стандартным SQL описаны в руководство по миграции.

person Elliott Brossard    schedule 10.01.2017
comment
Привет Эллиотт, Спасибо за ваш ответ. Однако, когда я запускаю запрос, я получаю код ошибки: имя столбца customDimensions неоднозначно. Я пытался обойти это. но ответа пока не нашел. Любая мысль? - person Rachel; 11.01.2017
comment
Я думаю, вам может понадобиться изменить его на: FROM aaprod-20160309.112099209.ga_sessions_* AS t и: CROSS JOIN UNNEST(t.customDimensions) AS customDimension - person Elliott Brossard; 11.01.2017
comment
Спасибо вам за быстрый ответ. теперь другая ошибка: не удается получить доступ к полю v2ProductCategory для значения типа ARRAY‹STRUCT‹productSKU STRING, v2ProductName STRING, v2ProductCategory STRING, ...››. Я новичок в Google Big Query, извините, если у меня слишком много вопросов. - person Rachel; 11.01.2017
comment
Возможно, вам также потребуется сгладить это, например. добавьте CROSS JOIN UNNEST(hit.product) AS product, а затем обратитесь к product.v2ProductCategory в списке выбора. Не стесняйтесь задавать еще один вопрос, если вам нужна дополнительная помощь, поскольку таким образом может быть проще обсудить запрос. - person Elliott Brossard; 11.01.2017
comment
Привет Эллиотт, я разместил еще один вопрос. stackoverflow.com/questions/41580589/ Пожалуйста, взгляните когда у тебя есть время. Спасибо - person Rachel; 11.01.2017
comment
Привет, Эллиот! Еще один вопрос, который я хотел бы задать: показывает ли мой запрос результат того, сколько уникальных посетителей просмотрели определенный продукт? - person Rachel; 19.01.2017
comment
Это даст вам количество уникальных посетителей с разбивкой по дням, категориям продуктов и значению пользовательского параметра. Например, если вам нужно просто подсчитать ежедневное количество посетителей по продуктам, вы можете удалить CROSS JOIN UNNEST(t.customDimensions) AS customDimension, а также customDimension.value из списка выбора (и группировки по). - person Elliott Brossard; 20.01.2017