Как объединить таблицы в BigQuery, используя пользовательское измерение в качестве уникального идентификатора - PullRequest
0 голосов
/ 24 октября 2018

Я хочу объединить свою таблицу Google Analytics с другой таблицей в Google BigQuery, но я хочу использовать пользовательское измерение в качестве моего уникального идентификатора.Ниже приведен мой запрос, но ему не нравится мой синтаксис для использования пользовательского измерения # 3 в качестве уникального идентификатора.Это сообщение об ошибке, которое я получаю:

** Невозможно получить доступ к индексу поля для значения с типом ARRAY> в [6:26] **

Любые идеи, какЯ могу сделать эту работу?

SELECT
*
FROM
  `wehco-bi.64884663.ga_sessions_20180928` AS GA, UNNEST(hits) AS hits
  <br/>LEFT JOIN `wehco-bi.BlueConic.ao` AS BC
  <br/>ON GA.customDimensions.index.3 = BC.bc_profile_id
<br/>LIMIT 100

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Если вы хотите работать с массивом, я бы посоветовал начать здесь https://cloud.google.com/bigquery/docs/reference/standard-sql/arrays#accessing-array-elements

То, что вы пытаетесь сделать, должно быть выполнено с использованием другого синтаксиса, подобного этому

GA.customDimensions[OFFSET(2)]

Он получит доступваш третий элемент в массиве.

0 голосов
/ 24 октября 2018

Я бы не рекомендовал присоединяться ко всей таблице ga_sessions.Выберите только нужный вам столбец (более эффективный и более дешевый), прежде чем вы сможете использовать пользовательские размеры, которые вам нужны, чтобы получить их из своих массивов.Самый простой способ сделать это - создать подзапрос.

with base as (
SELECT
DATE,
(SELECT value FROM UNNEST(hits.customDimensions) WHERE index=1 LIMIT 1) AS hit_level_cd1,
(SELECT value FROM UNNEST(t.customDimensions) WHERE index=3 LIMIT 1) session_level_cd3
FROM `wehco-bi.64884663.ga_sessions_20180928` AS t, UNNEST(hits) AS hits
)
SELECT DATE, hit_level_cd1,session_level_cd3
FROM base AS GA
LEFT JOIN
`wehco-bi.BlueConic.ao` AS BC
ON GA.session_level_cd2 = BC.bc_profile_id
LIMIT 100

сначала я создаю временную базовую таблицу, в которой я раскручиваю нестандартные измерения (я показывал разницу как для сеанса, так и для уровня попадания), затем я использую одиниз них, чтобы присоединить их к новой таблице так же, как вы пытались это сделать.

...