Firebase BigQuery导出活动性能

Firebase BigQuery导出活动性能,firebase,google-bigquery,Firebase,Google Bigquery,我很难复制访问分析控制台时发现的指标。特别是按活动详细信息划分的用户和会话指标(从“活动详细信息”事件中提取,并在90天内的最后一次交互基础上归属)。如果我查询数据时不考虑活动详细信息,我的值与控制台中的值相同。我很想知道以前是否有人使用过这种方法,并且能够像在控制台中那样获取数据,或者是否有可能期望奇偶校验 with initial_prep as ( SELECT (select max(value.string_value) from unnest(us

我很难复制访问分析控制台时发现的指标。特别是按活动详细信息划分的用户和会话指标(从“活动详细信息”事件中提取,并在90天内的最后一次交互基础上归属)。如果我查询数据时不考虑活动详细信息,我的值与控制台中的值相同。我很想知道以前是否有人使用过这种方法,并且能够像在控制台中那样获取数据,或者是否有可能期望奇偶校验

    with initial_prep as (
      SELECT
        (select max(value.string_value) from unnest(user_properties) where key='store') store,
        device.operating_system as operating_system,
        event_date,
        user_pseudo_id,
        event_timestamp,
        TIMESTAMP_MICROS(event_timestamp) AS ts,
        LAG(TIMESTAMP_MICROS(event_timestamp)) OVER (PARTITION BY user_pseudo_id ORDER BY event_timestamp) AS prev_evt_ts,
        IF(event_name = "session_start", 1, 0) AS is_session_start_event,
        IF(event_name = "first_open", 1, 0) AS is_first_visit_event,
        IF(event_name = "screen_view", 1, 0) AS is_screen_view,
        IF(event_name = "purchase",1,0) as is_purchase,
        ecommerce.purchase_revenue as value,
        ecommerce.shipping_value as shipping,
        ecommerce.total_item_quantity as quantity,

      FROM
  `[PROJECT DETAILS REDACTED].events_20*`
  WHERE
  parse_date('%y%m%d', _table_suffix) between DATE_sub(current_date(), interval 1 day) and  DATE_sub(current_date(), interval 1 day)   
  and 
device.operating_system = 'IOS'
 ), user_sources as (
select
        user_pseudo_id,
        TIMESTAMP_MICROS(event_timestamp) AS ts,
(select max(value.string_value) from unnest(event_params) where key='source' and event_name in( 'campaign_details')) source,
(select max(value.string_value) from unnest(event_params) where key='campaign' and event_name in( 'campaign_details')) campaign
from 
`[PROJECT DETAILS REDACTED].events_20*`
WHERE
   parse_date('%y%m%d', _table_suffix) between DATE_sub(current_date(), interval 90 day) and  DATE_sub(current_date(), interval 1 day)   
and 
event_name in ('campaign_details')
)

   , session_id_created as (
    SELECT
    *,
    SUM(is_session_start_event) OVER (PARTITION BY user_pseudo_id ORDER BY ts) AS session_id
  FROM initial_prep
  ) 
  , session_details as (
  SELECT
  si.user_pseudo_id,
  store, 
  operating_system,
  event_date,
  event_timestamp,
  session_id,
  MAX(is_session_start_event) OVER (PARTITION BY si.user_pseudo_id, session_id) AS has_session_start_event,
  is_session_start_event,
  MAX(is_first_visit_event) OVER (PARTITION BY si.user_pseudo_id, session_id) AS has_first_visit_event,
  is_first_visit_event,
  is_screen_view,
  MAX(event_timestamp) OVER (PARTITION BY si.user_pseudo_id, session_id) AS max_timestamp,
  MIN(event_timestamp) OVER (PARTITION BY si.user_pseudo_id, session_id) AS min_timestamp,
  is_purchase,
  value,
  shipping,
  quantity,
  us.source,
  us.campaign,
  row_number() over (partition by si.user_pseudo_id, event_timestamp order by us.ts desc) rank,
  us.ts time_campaign
  from session_id_created si
  left join user_sources us on us.user_pseudo_id = si.user_pseudo_id and si.ts  >= us.ts  -->= timestamp_sub(us.ts,interval 3600000 MICROSECOND)
 )
  , session_fin as (
  select user_pseudo_id,
  store, 
  operating_system,
  source,
  campaign,
  event_date,
  session_id,
  has_session_start_event,
  has_first_visit_event,
  max_timestamp,
  min_timestamp,
  sum(is_session_start_event) sessions_alt,
  sum(is_screen_view) screen_views,
  sum(value) revenue,
  sum(is_purchase) transactions,
  sum(shipping) shipping,
  sum(quantity) item_quantity
  from session_details
  where rank =1
  group by 
  user_pseudo_id,
  store, 
  event_date,
  operating_system,
  session_id,
  source,
  campaign,
  has_session_start_event,
  has_first_visit_event,
  max_timestamp,
  min_timestamp
  )
 
  select store
  , operating_system
   , source
  , campaign
  , event_date applicabledate
  , sum(sessions_alt) sessions
  , sum(transactions) transactions
  , sum(revenue) local_revenue
  , sum(shipping) local_shipping
  , sum(item_quantity) item_quantity
  , avg(max_timestamp/100000 - min_timestamp/100000)  avgsessionduration
  , count(distinct user_pseudo_id) users
  , count(distinct case when has_first_visit_event = 1 then user_pseudo_id end) new_users
  , sum(screen_views) screenviews
  from session_fin
  group by store, event_date, operating_system
  , source
  , campaign
  order by users desc
/**/