无法将自定义GA细分转换为Bigquery

时间:2017-07-06 11:49:02

标签: google-bigquery

我目前正在尝试从Bigquery中的GA编写以下自定义细分:
GA细分 GA Segment

我编写了以下代码,但它生成的数字与GA不同:

SELECT date,
sum(new_visits) as new_visits
FROM
(SELECT date, 
first_session_login,
first_session_email,
landing_page_customer,
first_session_cms_referral,
new_visits
FROM
(SELECT
date, 
case when visitNumber = 1 and hits.page.pagePath like '/login%' then 1 else 0 end as first_session_login,
case when visitNumber = 1 and trafficSource.medium = 'email' then 1 else 0 end as first_session_email,
case when visitNumber = 1 and hits.isEntrance is true and REGEXP_MATCH(hits.page.pagePath, r'/support/.*|/app/.*|/billing/.*|/goal/.*|/login/.*|/signup-flow/.*') is true then 1 else 0 end as landing_page_customer,
case when visitNumber = 1 and trafficSource.medium = 'cms referral' then 1 else 0 end as first_session_cms_referral,
totals.newVisits as new_visits
FROM
(SELECT
  date, visitNumber, hits.page.pagePath, trafficSource.medium, hits.isEntrance, hits.type, hits.hitNumber, geoNetwork.country, totals.newVisits
FROM (TABLE_DATE_RANGE([81532559.ga_sessions_], DATE_ADD(CURRENT_TIMESTAMP(), -2, 'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY'))))
)
WHERE 
first_session_login = 0
AND 
first_session_email = 0
AND 
landing_page_customer = 0
AND 
first_session_cms_referral = 0)
GROUP BY date


我的代码有什么问题?任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:1)

如果您可以使用Standard Version,这可能对您有用:

SELECT
  date,
  COUNT(1) new_visits
FROM `dataset_id.ga_sessions*`
WHERE 1 = 1
  AND CASE WHEN (REGEXP_CONTAINS(_table_suffix, 'intraday') AND REGEXP_EXTRACT(_table_suffix, r'.*_(.*)') BETWEEN FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))AND FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))) THEN TRUE
           WHEN (NOT REGEXP_CONTAINS(_table_suffix, 'intraday') AND REGEXP_EXTRACT(_table_suffix, r'.*_(.*)') BETWEEN FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 2 DAY))AND FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))) THEN TRUE END
  AND totals.visits = 1
  AND totals.newVisits = 1
  AND NOT trafficSource.medium IN ('email', 'cms referral')
  AND NOT EXISTS(select 1 from UNNEST(hits) where REGEXP_CONTAINS(page.pagePath, r'$/login') OR (isEntrance and REGEXP_CONTAINS(page.pagePath, r'/support/.*|/app/.*|/billing/.*|/goal/.*|/login/.*|/signup-flow/.*')))
GROUP BY
  date

正如Elliott指出的那样,与Legacy合作有点困难,因为它已经自动平整所有阵列。在标准SQL中,运行此类分析非常简单。