Ошибка при получении значения в пользовательском измерении в Google BigQuery - PullRequest
0 голосов
/ 19 сентября 2018

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

Вопрос в том, когда я пытался извлечь информацию для пользовательского измерения, например,

SELECT
fullvisitorId,
visitid,
hit.hitnumber,
(SELECT x.value FROM UNNEST(hit.customDimensions) x WHERE x.index = 1) as productCategory,
(SELECT x.value FROM UNNEST(hit.customDimensions) x WHERE x.index = 2) as loyaltyClass,
(SELECT x.value FROM UNNEST(hit.customDimensions) x WHERE x.index = 3) as existingCustomer
FROM [<id>.ga_sessions_20180805],UNNEST(hits) as hit
LIMIT 100

Затем я получил сообщение об ошибке «Не удалось разрешить совпадения с именем таблицы»: отсутствует имя набора данных ».

Я пытался использовать решения от других, подобные этому

SELECT
    fullvisitorId,
    visitid,
    hit.hitnumber,
    (SELECT x.value FROM UNNEST(hit.customDimensions) x WHERE x.index = 1) as productCategory,
    (SELECT x.value FROM UNNEST(hit.customDimensions) x WHERE x.index = 2) as loyaltyClass,
    (SELECT x.value FROM UNNEST(hit.customDimensions) x WHERE x.index = 3) as existingCustomer
FROM `<id>.ga_sessions_*`, UNNEST(hits) AS h
WHERE _TABLE_SUFFIX = '20180805'

Затем я получил еще одну ошибку Неверное имя таблицы: <id>.ga_sessions_* [Попробуйте использовать стандартный SQL (https://cloud.google.com/bigquery/docs/reference/standard-sql/enabling-standard-sql)].

Обновление: я даже попробовал самый простой запрос

    SELECT
      *
    FROM [<id>.ga_sessions_20180805]
    LEFT JOIN UNNEST(hits) as hits
   LIMIT 10

Все еще возвращает ту же ошибку ....

Какую ошибку я сделал для обоих сценариев? И как я могуполучить значение нестандартного размера?

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

В вашем первом запросе - вам просто нужно исправить ссылку на таблицу в строке ниже

FROM [<id>.ga_sessions_20180805],UNNEST(hits) as hit

на что-то вроде

FROM `yourproject.yourdataset.ga_sessions_20180805`,UNNEST(hits) as hit  

Аналогичное исправление для второго запроса, но дополнительно - псевдоним h следует заменить на hit, как показано ниже

FROM `yourproject.yourdataset.ga_sessions_*`, UNNEST(hits) AS hit

Примечание: выше относится к стандарту SQL BigQuery - так что вы можете добавить в верхнюю часть запроса ниже строки в качестве первой строки

#standardSQL     

Например

#standardSQL     
SELECT
  fullvisitorId,
  visitid,
  hit.hitnumber,
  (SELECT x.value FROM UNNEST(hit.customDimensions) x WHERE x.index = 1) as productCategory,
  (SELECT x.value FROM UNNEST(hit.customDimensions) x WHERE x.index = 2) as loyaltyClass,
  (SELECT x.value FROM UNNEST(hit.customDimensions) x WHERE x.index = 3) as existingCustomer
FROM `yourproject.yourdataset.ga_sessions_20180805`,UNNEST(hits) as hit 
LIMIT 100
0 голосов
/ 19 сентября 2018

Вы можете использовать случай, когда поддерживается всеми

    SELECT
    fullvisitorId,
    visitid,
    h.hitnumber,
    case when x.index = 1 then x.value end as productCategory,
    case when x.index = 2 then x.value end as loyaltyClass,
    case when x.index = 3 then x.value end as existingCustomer
    FROM [<id>.ga_sessions_20180805]
    LEFT JOIN UNNEST( hits ) as h
   WHERE _TABLE_SUFFIX = '20180805'

Примечание: включить стандартный запрос SQL для запроса или использовать новый пользовательский интерфейс BigQuery

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...