为了方便在MaxCompute上对数据进行加工处理,首先您需要在MaxCompute上建立数据表,用于承载原始数据及加工后的数据。

前提条件

  • 开通数据计算服务MaxCompute和创建DataWorks工作空间(本教程使用为简单模式工作空间),详细请参见环境准备
  • 完成MaxCompute计算服务对Tablestore数据访问的授权。当MaxCompute和Tablestore的所有者是同一个账号时,您可以单击此处一键授权。如果不是,您可以自定义授权,详情请参见访问OTS非结构化数据

操作步骤

  1. 进入DataWorks数据开发界面。
    1. 进入DataWorks工作空间列表,选择区域为华东2(上海)
    2. 单击已创建好的工作空间后的进入数据开发,进入工作空间的数据开发界面。
  2. 新建业务流程。
    1. 右键单击业务流程,选择新建业务流程
      新建业务流程
    2. 填写业务名称描述,单击新建。本教程中,业务流程名为Workshop。
  3. 新建数据表。
    1. 创建外部表ots_user_trace_log。
      1. 单击新建的业务流程Workshop,右键单击MaxCompute,选择新建 > ,输入表名ots_user_trace_log,单击提交11
      2. 填写创建表的中文名,然后单击DDL模式22
      3. DDL模式页面,输入建表语句,单击生成表结构
        外部表ots_user_trace_log的建表语句如下。
        CREATE EXTERNAL TABLE ots_user_trace_log (
            md5 string COMMENT '用户uid的md5值前8位',
            uid string COMMENT '用户uid',
            ts bigint COMMENT '用户操作时间戳',
            ip string COMMENT 'ip地址',
            status bigint COMMENT '服务器返回状态码',
            bytes bigint COMMENT '返回给客户端的字节数',
            device string COMMENT '终端型号',
            system string COMMENT '系统版本ios xxx/android xxx',
            customize_event string COMMENT '自定义事件:登录/退出/购买/注册/点击/后台/切换用户/浏览',
            use_time bigint COMMENT 'APP单次使用时长,当事件为退出、后台、切换用户时有该项',
            customize_event_content string COMMENT '用户关注内容信息,在customize_event为浏览和评论时 包含该列'
        )
        STORED BY 'com.aliyun.odps.TableStoreStorageHandler'
        WITH SERDEPROPERTIES (
            'tablestore.columns.mapping'=':md5,:uid,:ts, ip,status,bytes,device,system,customize_event,use_time,customize_event_content',
            'tablestore.table.name'='user_trace_log'
        )
        LOCATION 'tablestore://workshop-bj-001.cn-beijing.ots.aliyuncs.com/';
        • STORED BY:必选参数,值为com.aliyun.odps.TableStoreStorageHandler,是MaxCompute内置处理Tablestore数据的StorageHandler,定义了MaxCompute和Tablestore的交互。
        • SERDEPROPERITES:必选参数,是提供参数选项的接口,在使用TableStoreStorageHandler时,以下选项必须指定:
          • tablestore.columns.mapping:用于描述MaxCompute将访问的Tablestore表的列,包括主键和属性列。
            说明
            • 以冒号(:)开头的参数值为Tablestore主键,例如示例中的:md5:uid,其它参数值均为属性列。
            • 在指定映射时,您必须提供指定Tablestore表的所有主键,只需提供需要通过MaxCompute访问的属性列。提供的属性列必须是Tablestore表的列,否则即使外表可以创建成功,查询时也会报错。
          • tablestore.table.name:需要访问的Tablestore表名。如果指定的Tablestore表名错误(不存在),则会报错,MaxCompute不会主动创建Tablestore表。
        • LOCATION Clause:用来指定Tablestore的访问地址。请您根据环境准备,将自己的表格存储实例访问地址参数填写在此。
          说明 如果您使用公网地址LOCATION 'tablestore://workshop-bj-001.cn-beijing.ots.aliyuncs.com/'报错,显示网络不同,可尝试更换为经典网地址LOCATION 'tablestore://workshop-bj-001.cn-beijing.ots-internal.aliyuncs.com/'
      4. 单击提交到生产环境,完成表的创建。
        说明 如果您使用的是标准模式工作空间,请先单击提交到开发环境,然后单击提交到生产环境
    2. 创建ods_user_trace_log表。
      建表方法同上,建表语句如下。ods_user_trace_log为ODS层表,相关数仓模型定义请参见数据引入层(ODS)
      CREATE TABLE IF NOT EXISTS ods_user_trace_log (
          md5 STRING COMMENT '用户uid的md5值前8位',
          uid STRING COMMENT '用户uid',
          ts BIGINT COMMENT '用户操作时间戳',
          ip STRING COMMENT 'ip地址',
          status BIGINT COMMENT '服务器返回状态码',
          bytes BIGINT COMMENT '返回给客户端的字节数',
          device STRING COMMENT '终端型号',
          system STRING COMMENT '系统版本ios xxx/android xxx',
          customize_event STRING COMMENT '自定义事件:登录/退出/购买/注册/点击/后台/切换用户/浏览',
          use_time BIGINT COMMENT 'APP单次使用时长,当事件为退出、后台、切换用户时有该项',
          customize_event_content STRING COMMENT '用户关注内容信息,在customize_event为浏览和评论时 包含该列'
      )
      PARTITIONED BY (
          dt STRING
      );
    3. 创建dw_user_trace_log表。
      建表方法同上,建表语句如下。dw_user_trace_log为DW层表,相关数仓模型定义请参见明细粒度事实层(DWD)
      CREATE TABLE IF NOT EXISTS dw_user_trace_log (
          uid STRING COMMENT '用户uid',
          region STRING COMMENT '地域,根据ip得到',
          device_brand string comment '设备品牌',
          device STRING COMMENT '终端型号',
          system_type STRING COMMENT '系统类型,Android、IOS、ipad、Windows_phone',
          customize_event STRING COMMENT '自定义事件:登录/退出/购买/注册/点击/后台/切换用户/浏览',
          use_time BIGINT COMMENT 'APP单次使用时长,当事件为退出、后台、切换用户时有该项',
          customize_event_content STRING COMMENT '用户关注内容信息,在customize_event为浏览和评论时 包含该列'
      )
      PARTITIONED BY (
          dt STRING
      );
    4. 创建rpt_user_trace_log表。
      建表方法同上,建表语句如下。rpt_user_trace_log为ADS层表,相关数仓模型定义请参见数仓分层
      CREATE TABLE IF NOT EXISTS rpt_user_trace_log (
          country STRING COMMENT '国家',
          province STRING COMMENT '省份',
          city STRING COMMENT '城市',
          device_brand string comment '设备品牌',
          device STRING COMMENT '终端型号',
          system_type STRING COMMENT '系统类型,Android、IOS、ipad、Windows_phone',
          customize_event STRING COMMENT '自定义事件:登录/退出/购买/注册/点击/后台/切换用户/浏览',
          use_time BIGINT COMMENT 'APP单次使用时长,当事件为退出、后台、切换用户时有该项',
          customize_event_content STRING COMMENT '用户关注内容信息,在customize_event为浏览和评论时 包含该列',
          pv bigint comment '浏览量',
          uv bigint comment '独立访客'
      )
      PARTITIONED BY (
          dt STRING
      );
  4. 验证建表结果。
    1. 完成建表后,您可以在Workshop业务流程MaxCompute > 下看到新建的4张表。
    2. 右键单击业务流程中MaxCompute下的数据开发,选择新建 > ODPS SQL
    3. 新建节点页面,输入节点名称,单击提交新建ODPS SQL节点。
    4. 在新建的ODPS SQL节点中输入如下SQL语句,单击运行图标。
      DESCRIBE ots_user_trace_log;
      DESCRIBE ods_user_trace_log;
      DESCRIBE dw_user_trace_log;
      DESCRIBE rpt_user_trace_log;
      返回表的结构信息如下:验证结果