我需要从一个表中过滤Google Analytics数据,并按第二个表中的数据进行过滤。
我使用的查询如下:
SELECT
fullvisitorid,visitNumber,
max(case when hits.customdimensions.index = 30 then
hits.customdimensions.value end) login_id
FROM [table_1]
GROUP EACH BY fullvisitorid,visitNumber
我有第二个表table_2,它包含一个特别感兴趣的login_ids列表(并且只是table_1中的一小部分)。 我想要做的是通过table_2中包含的login_id过滤table_1中的数据,因此当我查询table_1时,只返回那些login_ids。 感谢所有人的帮助。
编辑:
上面的查询返回一个如下所示的表(table_1中的数据):
Row fullvisitorid visitNumber login_id
10 8812091098272426348 1
11 8812203501855327426 3
12 8813941868399328770 15
13 8814004579217219789 1
14 8814073006630329047 102 6kena7aeq1sc312porfhyf
15 8814073006630329047 103 6kena7aeq1sc312porfhyf
16 8814200803368464684 257
17 8814344603188097744 1
18 8814410578161636902 94
Table_2如下所示:
Row login_id
1 user_id
2 00015mY5EVDsSgFlDDq3EU
3 006rcSwDU1r8fiGnCIBCOZ
4 008ZM8TeCwo3V8Lcyip3rT
5 008nzvMgSF4Ir94ja04lXl
6 00DFrm85sK0tDUm96Kedkw
7 00GLa0WE0sq1Np4bvtmL9j
当我测试以下内容时,收到一条错误消息,指出“无法在重复的字段hits.customdimensions.value'上进行分区。”我怀疑case / end的使用可能搞乱了。
SELECT
fullvisitorid,visitNumber,
max(case when hits.customdimensions.index = 30 then
hits.customdimensions.value end) as login_id
FROM [table_1] as t1
inner join [table_2] as t2 on t2.login_id
= t1.hits.customdimensions.value
GROUP EACH BY fullvisitorid,visitNumber
感谢任何帮助。期望的结果是只返回table_1中的数据,其中login_ids与table_2的数据匹配。
答案 0 :(得分:1)
尝试以下(适用于BigQuery Legacy SQL,因为它就是您的问题)
#legacySQL
SELECT
fullvisitorid,
visitNumber,
t2.login_id AS login_id
FROM (
SELECT
fullvisitorid,
visitNumber,
MAX(CASE WHEN hits.customdimensions.index = 30
THEN hits.customdimensions.value END
) AS login_id
FROM [table_1]
GROUP BY fullvisitorid, visitNumber
) AS t1
JOIN [table_2] AS t2
ON t2.login_id = t1.login_id
答案 1 :(得分:0)
select
t1.fullvisitorid,
t1.visitNumber
FROM
(SELECT
fullvisitorid,visitNumber,
max(case when hits.customdimensions.index = 30 then
hits.customdimensions.value end) login_id
FROM [table_1]) as t1
inner join [table_2] as t2 on t2.login_id = t1.login_id
GROUP EACH BY fullvisitorid,visitNumber
或者可能应该是
inner join [table_2] as t2 on t2.login_id = t1.hits.customdimensions.value
无论如何,内部联接是您需要的解决方案。