正则表达式表导致此错误 - 在没有条件的情况下不能使用左外连接



我正在尝试使用由两列(正则表达式和通道(组成的表在其他几个表中创建自定义渠道分组列。

我们的组织中有几个包含谷歌分析数据的表格,我们在每个查询中手动创建正则表达式,以使用我的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()。 但是,这与您的问题无关。

最新更新