简体   繁体   English

使用数据工作室中大查询的数据重新创建谷歌分析仪表板

[英]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.

相关问题 在使用 Google Analytics 4 自动增强测量事件时报告 Data Studio 中的下载量为 URL? - Reporting URL of downloads in Data Studio when using Google Analytics 4 automatic enhanced measurement events? 使用数据融合的 Oracle 到大查询 - Oracle To Big Query using Data Fusion 使用联接表的 Big Query 视图时 Data Studio 查询错误 - Data Studio query error when using Big Query view that joins tables 如何在 nodejs @google-analytics/data library 中查询综合浏览量 - How to query pageviews in nodejs @google-analytics/data library 在过去 21 天的每周日晚上 11:59 将大查询中的数据提取到 Google 表格 - Pull data from big query to google sheet every Sunday at 11:59 pm for the last 21 days 如何从 google Analytics Api 获取记录的每个事件的数据? - how to get from google Analytics Api data for each event recorded? Google Cloud DataStream to Bigquery 模板无法将数据同步到大查询 - Google Cloud DataStream to Bigquery template not able to sync data to big query 你能从大查询表中获取数据到外部 stream - Can you get data from a Big Query table to an outside stream Google Dataflow 能否连接到 API 数据源并将数据插入 Big Query - Can Google Dataflow connect to API data source and insert data into Big Query 如何使用参数过滤 Data Studio 中的 Analytics 数据? - How to filter Analytics data in Data Studio with parameters?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM