代码之家  ›  专栏  ›  技术社区  ›  daniel

日期为“空”的Bigquery计数

  •  0
  • daniel  · 技术社区  · 6 年前

    SELECT TIMESTAMP_TRUNC(TIMESTAMP_MICROS( CAST(CAST(datetime AS NUMERIC)*1000 AS INT64)),DAY ) AS timestamp1, count(datetime)
    FROM `eventlogs` 
    WHERE ( CAST(datetime AS NUMERIC) > 1544375081371.431 ) AND message LIKE '%mymessage%'
    GROUP BY timestamp1 
    ORDER BY timestamp1
    LIMIT 10000
    

    这给了我如下结果:

    1   2018-12-10 00:00:00 UTC 561
    2   2018-12-11 00:00:00 UTC 1473
    3   2018-12-12 00:00:00 UTC 650
    4   2018-12-13 00:00:00 UTC 407
    5   2018-12-14 00:00:00 UTC 283
    6   2018-12-15 00:00:00 UTC 1
    7   2018-12-17 00:00:00 UTC 213
    8   2018-12-18 00:00:00 UTC 583
    

    有没有办法用0来获取缺失的日期2018-12-16?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Lukasz Szozda    6 年前

    SELECT cal_day, count(e.datetime) AS cnt
    FROM UNNEST(
        GENERATE_DATE_ARRAY(DATE('2018-12-10'), CURRENT_DATE(), INTERVAL 1 DAY)
    ) AS cal_day
    LEFT JOIN `eventlogs` e
      ON cal.d = CAST(e.datetime AS DATE)
    WHERE ( CAST(datetime AS NUMERIC) > 1544375081371.431 )
      AND message LIKE '%mymessage%'
    GROUP BY cal_day
    ORDER BY cal_day
    LIMIT 10000