结算等级问题与bigquery中的30天活动用户查询有关

时间:2017-05-04 14:51:19

标签: sql google-bigquery

有没有办法使用bigquery我可以运行此查询而不必使用如此庞大的计费层?它在计费层上的范围从11到20不等。是我唯一选择加快结算等级并让费用流动的选择吗?

WITH allTables AS (SELECT
  app,
  date,
  SUM(CASE WHEN period = 1  THEN users END) as days_1
FROM (
  SELECT
    CONCAT(user_dim.app_info.app_id, ':', user_dim.app_info.app_platform) as app,
    dates.date as date,
    periods.period as period,
    COUNT(DISTINCT user_dim.app_info.app_instance_id) as users
  FROM `table.*` as activity
  CROSS JOIN
    UNNEST(event_dim) AS event
  CROSS JOIN (
    SELECT DISTINCT
      TIMESTAMP_TRUNC(TIMESTAMP_MICROS(event.timestamp_micros), DAY, 'UTC') as date
    FROM `table.*`
    CROSS JOIN
        UNNEST(event_dim) as event) as dates
    CROSS JOIN (
      SELECT
        period
      FROM (
        SELECT 1 as period
      )
    ) as periods
    WHERE
      dates.date >= TIMESTAMP_TRUNC(TIMESTAMP_MICROS(event.timestamp_micros), DAY, 'UTC')
    AND
      FLOOR(TIMESTAMP_DIFF(dates.date, TIMESTAMP_MICROS(event.timestamp_micros), DAY)/periods.period) = 0
    GROUP BY 1,2,3
  )
  GROUP BY 1,2) SELECT
 app as target,
 UNIX_SECONDS(date) as datapoint_time,
 SUM(days_1) as datapoint_value
FROM allTables
WHERE
 date >= TIMESTAMP_ADD(TIMESTAMP_TRUNC(CURRENT_TIMESTAMP, Day, 'UTC'), INTERVAL -1 DAY)
GROUP BY date,1
ORDER BY date ASC

0 个答案:

没有答案