美文网首页
BigQuery StandardSQL Insert

BigQuery StandardSQL Insert

作者: 瓜尔佳_半阙 | 来源:发表于2019-01-17 20:35 被阅读28次

    很惭愧,Flink看的一知半解的,还没有进行真正生产上的实践就跑到GCP去玩耍了,回头一定要把Flink搞明白(专业立flag二十年)
    关于BigQuery,定位应该和阿里的ODPS差不多,但是国内好像很少有人使用,刚刚写了个复杂的SQL,所以写篇文章记录一下,顺便完成简书的日更挑战。
    BigQuery和Firebase连通后,Firebase的所有数据会同步到BigQuery中,###events_开头的表是历史表(每天的都有),###event_intraday_开头的表是实时表(只有当天的),但是由于数据量太大,运营人员一天查看数据的次数较多,所以花钱太多了,公司没钱了,只好求我把数据统计到小表中,这样即便经常查询,也不会产生大量的费用,哇咔咔。
    事件表的表结构大致是这样的:


    不全的截图.png

    其他字段都正常查询就行,就是这个傻呵呵的event_params,是个RECORD类型,我也不知道这是个什么类型,反正使用标准SQL不太好查询,翻阅其官方文档,一顿瞎搞,终于,终于,终于搞定了,我都要绝望了啊,果不其然,坚持就是胜利啊,幸亏老子摩羯座,隐忍而伟大,牛逼

    insert `dataset_name.test` (product_name,event_name,event_date,event_params,event_number,event_user_number)
     WITH
      events AS (
      SELECT * 
      FROM `dataset_name.analytics_184463080.events_*`
      WHERE _table_suffix BETWEEN FORMAT_DATE('%Y%m%d',DATE_ADD(CURRENT_DATE(),INTERVAL -3 DAY))
        AND FORMAT_DATE('%Y%m%d',DATE_ADD(CURRENT_DATE(),INTERVAL -1 DAY)))
      select tempA.product_name as product_name,
      tempA.event_name as event_name,
      tempA.event_date as event_date,
      ARRAY<STRUCT<key STRING, value STRUCT<string_value STRING, int_value INT64, float_value FLOAT64, double_value FLOAT64>>>[
    STRUCT(tempA.key,STRUCT(tempA.stringValue,tempA.intValue,tempA.floatValue,tempA.doubleValue))
      ] as event_params,
      tempA.event_number as event_number,
      tempA.event_user_number as event_user_number
      from (
      SELECT
        'filescanner' AS product_name,
        event_name,
        event_date, 
        event_params.key as key,
        event_params.value.string_value as stringValue,
        event_params.value.int_value as intValue,
        event_params.value.float_value as floatValue,
        event_params.value.double_value as doubleValue,
        COUNT(event_name) AS event_number,
        COUNT(DISTINCT user_pseudo_id) AS event_user_number
      FROM
        events,events.event_params
      GROUP BY product_name,event_name,event_date,key,stringValue,intValue,floatValue,doubleValue
      ) as tempA
    

    应该够100字了,这GCP国内外资料太少了,不会点英文官方文档都看不了,幸好老子电脑有Google翻译,哇咔咔

    相关文章

      网友评论

          本文标题:BigQuery StandardSQL Insert

          本文链接:https://www.haomeiwen.com/subject/mfdwdqtx.html