我目前正在尝试从Bigquery中的GA编写以下自定义细分:
GA细分
我编写了以下代码,但它生成的数字与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
我的代码有什么问题?任何帮助都非常感谢。
答案 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中,运行此类分析非常简单。