Google bigquery BQ使用包含条件给出不完整的结果

Google bigquery BQ使用包含条件给出不完整的结果,google-bigquery,Google Bigquery,我正在使用Bigquery处理一些Adwords数据,更准确地说,从目标url提取所有url参数,以便更好地组织它,等等 我编写了以下查询以返回表中“DestinationURL”字段中可用的所有参数。详情如下: SELECT Parameter FROM (SELECT NTH(1, SPLIT(Params,'=')) as Parameter, FROM (SELECT AdID, NTH(1, SPLIT(De

我正在使用Bigquery处理一些Adwords数据,更准确地说,从目标url提取所有url参数,以便更好地组织它,等等

我编写了以下查询以返回表中“DestinationURL”字段中可用的所有参数。详情如下:

SELECT Parameter
  FROM (SELECT NTH(1, SPLIT(Params,'=')) as Parameter,
        FROM (SELECT 
              AdID,
              NTH(1, SPLIT(DestinationURL,'?')) as baseurl,
              split(NTH(2, SPLIT(DestinationURL,'?')),'&') as Params
              FROM [adwords_accounts_ads.ads_all] 
              HAVING Params CONTAINS '='))

 GROUP BY 1
运行它将给我6个参数。这是正确的,但不完整,因为在这个测试表中,我知道URL中还有两个其他参数没有获取。一个称为“组”,另一个称为“utm_内容”

现在如果我跑步:

SELECT Parameter
  FROM (SELECT NTH(1, SPLIT(Params,'=')) as Parameter,
        FROM (SELECT 
              AdID,
              NTH(1, SPLIT(DestinationURL,'?')) as baseurl,
              split(NTH(2, SPLIT(DestinationURL,'?')),'&') as Params
              FROM [adwords_accounts_ads.ads_all] 
              HAVING Params CONTAINS 'p='))

 GROUP BY 1
我得到显示的“组”参数

问题是:政府不应该这样做吗

"CONTAINS '='" 
条件包括

"CONTAINS 'p='" 
结果如何?对于“t=”而不是“=”也会发生同样的情况

有人知道我怎么解决这个问题吗?或者甚至如何从包含URL的字符串中提取所有参数

ps:使用LIKE产生完全相同的结果


谢谢

Split会创建一个重复的输出类型,您必须展平表格才能正确查看

在这里,我在
params
上使用了flatte,现在输出良好:

SELECT nth(1,SPLIT(Params,'=')) AS Param,
       nth(2,SPLIT(Params,'=')) AS Value
FROM flatten(SELECT 
                AdID, 
                NTH(1, SPLIT(DestinationURL,'?')) AS baseurl, 
                split(NTH(2, SPLIT(DestinationURL,'?')),'&') AS Params
                FROM
                    (SELECT 1 AS AdID,'http://www.example.com.br/?h=Passagens+Aereas&source=google&vt=0' AS DestinationURL) 
                HAVING Params CONTAINS '=',
            params
            )
产出:

+-----+--------+------------------+---+
| Row | Param  |      Value       |   |
+-----+--------+------------------+---+
|   1 | h      | Passagens+Aereas |   |
|   2 | source | google           |   |
|   3 | vt     | 0                |   |
+-----+--------+------------------+---+

注意:Web UI总是将结果展平,但如果选择目标表并取消选中“展平结果”,您将得到一个包含重复部分列的单行。

请给我们一些示例URL。我注意到这些查询使用不同的输入表-adwords\u accounts\u ads.PT\u Flights\u all与adwords\u accounts\u ads.ads\u all-这能解释差异吗?@MoshaPasumansky这只是我在这里抄写时的一个拼写错误。表在两个基中都是相同的,唯一的变化是“包含”=“@Pentium10这里有一些:我刚刚替换了域,因为它是用于客户端的