我正在尝试使用由两列(正则表达式和通道(组成的表在其他几个表中创建自定义渠道分组列。
我们的组织中有几个包含谷歌分析数据的表格,我们在每个查询中手动创建正则表达式,以使用我的source_medium列创建自定义渠道分组(付费媒体、自然、直接等(。我想集中这一点,创建一个包含两列(正则表达式、通道(的表,并在我们的查询中用作子查询以创建一个名为 channel 的新列。
该custom_channel_table具有以下结构(示例(:
[ REGEX , CHANNEL ]
[ "^((direct) / (none)) " , "direct" ]
[ "(organic)" , "organic" ]
[ "^(google / cpc) " , "google" ]
main_table具有以下结构:
[ SOURCE_MEDIUM ]
["(direct) / (none)"]
[ "google / cpc" ]
[ "organic" ]
当我运行查询时,我希望得到结果:
[ SOURCE_MEDIUM , CHANNEL ]
["(direct) / (none)", "direct" ]
[ "google / cpc" , "google" ]
[ "organic" , "organic"]
但我收到以下代码错误。
如果没有连接两侧的字段相等的条件,则不能使用左外连接。
这是我的查询:
SELECT source_medium ,
( SELECT channel
FROM custom_channel_table
WHERE REGEXP_EXTRACT(source_medium, regex) = source_medium) AS channel
FROM main_table;
我该如何解决这个问题?
您可以使用CROSS JOIN
尝试此操作,然后LEFT JOIN
:
SELECT source_medium ,
( SELECT channel
FROM custom_channel_table
WHERE REGEXP_EXTRACT(source_medium, regex) = source_medium) AS channel
FROM main_table;
注意:您正在使用REGEXP_EXTRACT()
. 我建议改用REGEXP_CONTAINS()
。 但是,这与您的问题无关。