REGEXP_MATCH的行为不符合预期

时间:2017-10-06 11:01:37

标签: sql google-bigquery

我试图过滤数据,我从Google Analytics数据会话,clientid和自定义维度中提取数据。自定义维度仅在某些情况下设置,遗憾的是我们没有设置默认值。因此它可以为空或空。这些值都具有如下格式:5lkfzls6e5xt8aazyygsop。他们都以数字开头。我认为下面的表达式只会返回有自己存在的自定义尺寸,但我仍然会返回所有其他值。

SELECT date, 
   SUM(totals.visits) AS sessions,
   fullVisitorId,
max(case when hits.customdimensions.index = 30 then hits.customdimensions.value end) dogs
FROM [data_source]

   WHERE REGEXP_MATCH (hits.customdimensions.value, '^[0-9]')
GROUP BY date, fullVisitorId
ORDER BY dogs DESC 

编辑,添加样本数据:

Sample data

2 个答案:

答案 0 :(得分:1)

当您使用Legacy SQL时 - bellow用于Legacy SQL

   

1 - 下面,看起来像你问题中的确切查询确实有效!

#legacySQL
SELECT DATE, 
   SUM(totals.visits) AS sessions,
   fullVisitorId,
  MAX(CASE WHEN hits.customdimensions.index = 3 THEN hits.customdimensions.value END) dogs
FROM [project:dataset.table]
GROUP BY DATE, fullVisitorId
HAVING IFNULL(dogs, '') != ''
ORDER BY dogs DESC    

2 - 作为替代方案 - 尝试以下版本

background-size: contain; or background-size: cover;
    .hero {width: 100%;
        height: 400px;
        background-image: url('img_flowers.jpg');
        background-repeat: no-repeat;
        background-size: contain;
    }

3 - 我刚测试了两者并且它们都工作 - 如果它们不适合你 - 这意味着只有那些你没有在你的数据中指明的东西

答案 1 :(得分:0)

documentation开始,您的语法可能略有偏差,您应该这样做:

WHERE REGEXP_MATCH (hits.customdimensions.value, r'^[0-9]')
                                                ^^^ you omitted the r