Как соединить пользовательские измерения и транзакции слева

# #google-bigquery #transactions #left-join #custom-dimensions

Вопрос:

Я оставил объединенные значения из пользовательских измерений (идентификатор пользователя и продавцы). Я также хотел бы добавить транзакции. Могу ли я получить несколько советов о том, как добавить это в этот запрос? Или мне нужно полностью изменить структуру? Вот как я это опробовал, но я получаю синтаксическую ошибку, в которой говорится, что ожидается конечный ввод, где находится оператор FROM.

 merchants.merchant_Id,
otherMerchants.merchant_id AS otherMerchants,
merchants.market AS market,
COUNT (merchants.transactions) AS transactions,
COUNT(DISTINCT merchants.userId) users
FROM(

SELECT 
#här hämtar vi alla userIds och merchantIds
(SELECT VALUE FROM UNNEST(customDimensions) WHERE INDEX = 3) userid,
(SELECT VALUE FROM UNNEST(customDimensions) WHERE INDEX = 4) merchant_Id,
(SELECT VALUE FROM UNNEST (customDimensions) WHERE INDEX = 8) market,
hits.transaction.transactionId) as transactions

 FROM `qliro-66ee8.128389777.ga_sessions_20210628`
 UNNEST (hits) AS hits
) merchants

LEFT JOIN 

(
SELECT 
#här hämtar vi alla userIds och merchantIds igen för att kunna nyckla ihop det
(SELECT VALUE FROM UNNEST(customDimensions) WHERE INDEX = 3) userid,
(SELECT VALUE FROM UNNEST(customDimensions) WHERE INDEX = 4) merchant_id,
(SELECT VALUE FROM UNNEST (customDimensions) WHERE INDEX = 8) market,
hits.transaction.transactionId) as transactions

 FROM `qliro-66ee8.128389777.ga_sessions_20210628`
 UNNEST (hits) AS hits
) otherMerchants

#nycklar på att det är samma user samt inte samma merchant för att inte få dubbelräkning
#nycklar på att det är samma user samt inte samma merchant för att inte få dubbelräkning
ON merchants.userId = otherMerchants.userid
AND merchants.merchant_Id != otherMerchants.merchant_id
AND merchants.transactions = otherMerchants.transactions
AND merchants.market = otherMerchants.market

GROUP BY 1,2,3



 

Комментарии:

1. Вы имеете totals.transactions в виду функцию GA?

2. Я обновил запрос в своем посте с помощью запроса, который я пытался выполнить, но я использовал hits.transactions, а не totals.transaction. Хотя, возможно, я ошибаюсь!

3. Еще один вопрос: это customDimensions функция на уровне сеанса или они hits.customDimensions ?

4. Действительно актуальный вопрос @MatteoFelici. Это область действия сеанса!

Ответ №1:

Я думаю, что вы очень близки! Вы должны сделать что-то вроде этого

 SELECT
merchants.merchant_Id,
otherMerchants.merchant_id AS otherMerchants,
merchants.market AS market,
SUM(merchants.transactions) AS transactions,
COUNT(DISTINCT merchants.userId) users
FROM(

SELECT 
(SELECT VALUE FROM UNNEST(t1.customDimensions) WHERE INDEX = 3) userid,
(SELECT VALUE FROM UNNEST(t1.customDimensions) WHERE INDEX = 4) merchant_Id,
(SELECT VALUE FROM UNNEST (t1.customDimensions) WHERE INDEX = 8) market,
count(distinct hits.transaction.transactionId) as transactions

 FROM `qliro-66ee8.128389777.ga_sessions_20210628` t1,
 UNNEST (hits) AS hits
 GROUP BY 1,2,3
) merchants

LEFT JOIN 

(
SELECT 
#här hämtar vi alla userIds och merchantIds igen för att kunna nyckla ihop det
(SELECT VALUE FROM UNNEST(customDimensions) WHERE INDEX = 3) userid,
(SELECT VALUE FROM UNNEST(customDimensions) WHERE INDEX = 4) merchant_id,
(SELECT VALUE FROM UNNEST (customDimensions) WHERE INDEX = 8) market

 FROM `qliro-66ee8.128389777.ga_sessions_20210628`
) otherMerchants

ON merchants.userId = otherMerchants.userid
AND merchants.merchant_Id != otherMerchants.merchant_id
AND merchants.market = otherMerchants.market

GROUP BY 1,2,3
 

Изменить: отсутствует инструкция GROUP BY в запросе

Комментарии:

1. Ах! Конечно, вам нужно будет определить первые пользовательские таблицы измерений, чтобы они не перепутались. Но я получаю синтаксическую ошибку, в которой говорится: «НЕУСТАНОВЛЕННОЕ выражение ссылается на t1.customDimensions, которое не сгруппировано и не агрегировано в [10: 27], поэтому я добавил группу в рамках этого запроса. Не знаю, как это повлияет на мой результат, хотя

2. Похоже, что это не дает другого результата — то есть никаких странных различий в агрегировании и т. Д. Знаете ли вы, что делает эта дополнительная группа и почему она должна быть там? Просто чтобы я учился на том, что я сделал, ха-ха 😀

3. Вы правы, я пропустил ГРУППУ в первом внутреннем запросе. Поскольку я использую агрегацию COUNT (), я должен указать ГРУППУ ПО для всех остальных измерений (поэтому userId, merchant_Id, market )