[英]Recreating google analytics dashboard using data from big query within data studio
I am currently trying to recreate my google analytics dashboard using the big query connector within ga4.我目前正在尝试使用 ga4 中的大查询连接器重新创建我的谷歌分析仪表板。 I am using a custom query to pull the data i need from Big Query and display it in data studio.
我正在使用自定义查询从 Big Query 中提取我需要的数据并将其显示在数据工作室中。 When i just calculate some KPIs from the data and pull those using the query, the information comes through correct.
当我只是从数据中计算一些 KPI 并使用查询提取这些 KPI 时,信息是正确的。 But once I try to access custom event data, i have to unnest it before it is accessible.
但是一旦我尝试访问自定义事件数据,我必须在它可以访问之前取消嵌套。 Once unnested, the unnested data needs to be grouped or the query will throw an error.
一旦取消嵌套,需要对未嵌套的数据进行分组,否则查询将抛出错误。 The grouping of rows seems to be messing up the KPI's i previously calculated and inflates the values.
行分组似乎打乱了我之前计算的 KPI,并夸大了值。 How do i query this data correctly?
我如何正确查询这些数据? I tried to pull all the raw data in and use custom fields within data studio to calculate the fields i need but ran into issues there too.
我试图提取所有原始数据并使用数据工作室中的自定义字段来计算我需要的字段,但也遇到了问题。
SELECT
distinct
event_date,
event_timestamp,
event_name,
user_pseudo_id,
device.category,
-- author
(
SELECT
distinct
params.value.string_value
FROM
UNNEST(event_params) AS params
WHERE
params.key='author'
group by 1 ) AS author,
-- campaign
(
SELECT
params.value.string_value
FROM
UNNEST(event_params) AS params
WHERE
params.key='campaign'
group by 1 ) AS campaign,
-- categories
(
SELECT
params.value.string_value
FROM
UNNEST(event_params) AS params
WHERE
params.key='categories'
group by 1 ) AS categories,
-- clientid
(
SELECT
params.value.string_value
FROM
UNNEST(event_params) AS params
WHERE
params.key='clientid'
group by 1 ) AS clientid,
-- duration
(
SELECT
params.value.string_value
FROM
UNNEST(event_params) AS params
WHERE
params.key='duration'
group by 1 ) AS duration,
-- eventactions
(
SELECT
params.value.string_value
FROM
UNNEST(event_params) AS params
WHERE
params.key='eventactions'
group by 1 ) AS eventactions,
-- eventcategory
(
SELECT
params.value.string_value
FROM
UNNEST(event_params) AS params
WHERE
params.key='eventcategory'
group by 1 ) AS eventcategory,
-- eventlabel
(
SELECT
params.value.string_value
FROM
UNNEST(event_params) AS params
WHERE
params.key='eventlabel'
group by 1 ) AS eventlabel,
-- mediatype
(
SELECT
params.value.string_value
FROM
UNNEST(event_params) AS params
WHERE
params.key='mediatype'
group by 1 ) AS mediatype,
-- pagetitle
(
SELECT
params.value.string_value
FROM
UNNEST(event_params) AS params
WHERE
params.key='pagetitle'
group by 1 ) AS pagetitle,
-- pagetype
(
SELECT
params.value.string_value
FROM
UNNEST(event_params) AS params
WHERE
params.key='pagetype'
group by 1 ) AS pagetype,
-- source
(
SELECT
params.value.string_value
FROM
UNNEST(event_params) AS params
WHERE
params.key='source'
group by 1 ) AS SOURCE,
-- sourceurl
(
SELECT
params.value.string_value
FROM
UNNEST(event_params) AS params
WHERE
params.key='sourceurl'
group by 1 ) AS sourceurl,
-- srclink
(
SELECT
params.value.string_value
FROM
UNNEST(event_params) AS params
WHERE
params.key='srclink'
group by 1 ) AS srclink,
-- status
(
SELECT
params.value.string_value
FROM
UNNEST(event_params) AS params
WHERE
params.key='status'
group by 1 ) AS status,
-- title
(
SELECT
params.value.string_value
FROM
UNNEST(event_params) AS params
WHERE
params.key='title'
group by 1 ) AS title,
-- user_clientid
(
SELECT
params.value.string_value
FROM
UNNEST(event_params) AS params
WHERE
params.key='user_clientid'
group by 1 ) AS user_clientid,
traffic_source.source AS User_Source,
-- end groupby
COUNT(1) AS eventCount,
SAFE_DIVIDE(COUNT(DISTINCT
CASE
WHEN ( SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'session_engaged') = '1' THEN CONCAT(user_pseudo_id,( SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id'))
END
),COUNT(DISTINCT CONCAT(user_pseudo_id,(
SELECT
value.int_value
FROM
UNNEST(event_params)
WHERE
key = 'ga_session_id')))) AS engagement_rate,
COUNT(DISTINCT user_pseudo_id) AS Unique_Users,
COUNT(DISTINCT
CASE
WHEN ( SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'engagement_time_msec') > 0 OR ( SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'session_engaged') = '1' THEN user_pseudo_id
ELSE
NULL
END
) AS active_users,
COUNT(DISTINCT
CASE
WHEN ( SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_number') = 1 THEN user_pseudo_id
ELSE
NULL
END
) AS new_users,
COUNT(DISTINCT user_pseudo_id) AS users
FROM
`zngly-corporate.analytics_315869392.events_*`,
UNNEST(event_params) AS params
GROUP BY
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23
Above is the sql query that I have tried.以上是我试过的 sql 查询。 Not sure how i can achieve what i need correctly, if anyone has any insight to share I would appreciate it.
不确定我如何才能正确地实现我需要的东西,如果有人有任何见解可以分享,我将不胜感激。
The SQL for this is quite complex.这个 SQL 是相当复杂的。 You might try a query builder like Analytics Canvas to verify your result set: https://analyticscanvas.com/ga4-bigquery-query-builder/ .
您可以尝试像 Analytics Canvas 这样的查询构建器来验证您的结果集: https://analyticscanvas.com/ga4-bigquery-query-builder/ 。 There's a free trial, so you don't need to buy the software to verify your results and get you back on track.
有免费试用版,因此您无需购买软件即可验证结果并让您重回正轨。
Be super careful when connecting Looker Studio to BQ directly.将 Looker Studio 直接连接到 BQ 时要格外小心。 It sends separate queries for each chart, table, scorecard and user of the report.
它为报告的每个图表、表格、记分卡和用户发送单独的查询。 If you connect directly, ensure you are creating date partitioned summary tables and hitting those, instead of the raw GA4 export tables.
如果您直接连接,请确保您正在创建日期分区汇总表并点击这些表,而不是原始 GA4 导出表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.