详情页标题前

阿里云云原生大数据计算服务 MaxCompute创建表-云淘科技

详情页1

是MaxCompute的数据存储单元。您需要基于表进行数据处理。本文为您介绍如何创建表。

前提条件

请确认您已满足如下条件:

  • 已登录MaxCompute客户端。

    更多登录MaxCompute客户端操作,请参见登录MaxCompute客户端。

  • 已准备好保存了待导入数据的CSV或TXT文件。
    本文提供的数据文件样例如下:

    • 创建非分区表的数据文件:banking.txt。
    • 创建分区表的数据文件:banking_nocreditcard.csv、banking_uncreditcard.csv和banking_yescreditcard.csv。
  • 如果是RAM用户创建表,请确认阿里云账号已经授予RAM用户创建表的权限(CreateTable)。

    更多查看权限操作,请参见查看用户的权限。

    更多授权操作,请参见授权。

注意事项

新创建表的数据类型务必与数据文件的各列数据类型保持一致,如果二者不一致,会导致后续导入数据操作执行失败。

步骤一:设计表

您需要根据待导入的数据内容和最终需要生成的结果数据,确定需要创建的表类型、结构及各列的数据类型。

本文中提供的示例数据内容如下,展示的是银行贷款购房人员的数据。

--待创建非分区表的数据。
44,blue-collar,married,basic.4y,unknown,yes,no,cellular,aug,thu,210,1,999,0,nonexistent,1.4,93.444,-36.1,4.963,5228.1,0
53,technician,married,unknown,no,no,no,cellular,nov,fri,138,1,999,0,nonexistent,-0.1,93.2,-42,4.021,5195.8,0
28,management,single,university.degree,no,yes,no,cellular,jun,thu,339,3,6,2,success,-1.7,94.055,-39.8,0.729,4991.6,1
--待创建分区表的数据。
53,technician,married,unknown,no,no,cellular,nov,fri,138,1,999,0,nonexistent,-0.1,93.2,-42,4.021,5195.8,0
28,management,single,university.degree,yes,no,cellular,jun,thu,339,3,6,2,success,-1.7,94.055,-39.8,0.729,4991.6,1
39,services,married,high.school,no,no,cellular,apr,fri,185,2,999,0,nonexistent,-1.8,93.075,-47.1,1.405,5099.1,0

您可以识别到数据列数、每列数据的数据类型,同时可以了解各列数据对应的含义,为每列数据定义一个列名称。假设基于示例数据,识别到的信息如下。

类型 说明
表的列数 从示例数据中识别表列数信息如下:

  • 创建非分区表的示例数据包含21列,新创建表的列数可设定为21列。


    说明 如果表的列数超过示例数据的列数,不足的列将填充NULL。如果表的列数少于示例数据的列数,多余的数据将被丢弃。

  • 创建分区表的示例数据包含20列,新创建表的列数可设定为21列,其中一列为分区列,您需要在创建表时定义分区。
表的列字段 从示例数据中识别表列字段信息如下:

  • 非分区表的列字段包含:
    • age:年龄
    • job:工作类型
    • marital:婚否
    • education:教育程度
    • credit:是否有信用卡
    • housing:是否有房贷
    • loan:是否有贷款
    • contact:联系方式
    • month:月份
    • day_of_week:星期几
    • duration:持续时间
    • campaign:本次活动联系的次数
    • pdays:与上一次联系的时间间隔
    • previous:之前与客户联系的次数
    • poutcome:之前市场活动的结果
    • emp_var_rate:就业变化速率
    • cons_price_idx:消费者物价指数
    • cons_conf_idx:消费者信心指数
    • euribor3m:欧元存款利率
    • nr_employed:职工人数
    • fixed_deposit:是否有定期存款
  • 分区表的列字段包含:
    • age:年龄
    • job:工作类型
    • marital:婚否
    • education:教育程度
    • housing:是否有房贷
    • loan:是否有贷款
    • contact:联系方式
    • month:月份
    • day_of_week:星期几
    • duration:持续时间
    • campaign:本次活动联系的次数
    • pdays:与上一次联系的时间间隔
    • previous:之前与客户联系的次数
    • poutcome:之前市场活动的结果
    • emp_var_rate:就业变化速率
    • cons_price_idx:消费者物价指数
    • cons_conf_idx:消费者信心指数
    • euribor3m:欧元存款利率
    • nr_employed:职工人数
    • fixed_deposit:是否有定期存款
    • credit:是否有信用卡。该列为分区列。
数据类型 从示例数据中识别表列字段的数据类型信息如下:

  • age:BIGINT
  • job:STRING
  • marital:STRING
  • education:STRING
  • credit:STRING
  • housing:STRING
  • loan:STRING
  • contact:STRING
  • month:STRING
  • day_of_week:STRING
  • duration:STRING
  • campaign:BIGINT
  • pdays:DOUBLE
  • previous:DOUBLE
  • poutcome:STRING
  • emp_var_rate:DOUBLE
  • cons_price_idx:DOUBLE
  • cons_conf_idx:DOUBLE
  • euribor3m:DOUBLE
  • nr_employed:DOUBLE
  • fixed_deposit:BIGINT

步骤二:创建表

基于示例数据,创建非分区表bank_data和分区表bank_data_pt,用于存储业务数据;创建非分区表result_table1和result_table2,用于存储结果数据。更多表及分区的操作信息,请参见表操作和分区和列操作。创建表的操作流程如下:

  1. 可选:在MaxCompute客户端,执行如下命令切换至目标MaxCompute项目。如果您启动MaxCompute客户端后已在目标MaxCmpute项目中,请忽略该步骤。
    use doc_test_dev;

    切换成功显示如下。

    odps@ doc_test_dev>
  2. 在MaxCompute客户端,创建表bank_data、bank_data_pt、result_table1和result_table2。更多创建表语法,请参见创建表。
    • 创建非分区表bank_data,命令示例如下。
      create table if not exists bank_data
      (
       age             BIGINT comment '年龄',
       job             STRING comment '工作类型',
       marital         STRING comment '婚否',
       education       STRING comment '教育程度',
       credit          STRING comment '是否有信用卡',
       housing         STRING comment '是否有房贷',
       loan            STRING comment '是否有贷款',
       contact         STRING comment '联系方式',
       month           STRING comment '月份',
       day_of_week     STRING comment '星期几',
       duration        STRING comment '持续时间',
       campaign        BIGINT comment '本次活动联系的次数',
       pdays           DOUBLE comment '与上一次联系的时间间隔',
       previous        DOUBLE comment '之前与客户联系的次数',
       poutcome        STRING comment '之前市场活动的结果',
       emp_var_rate    DOUBLE comment '就业变化速率',
       cons_price_idx  DOUBLE comment '消费者物价指数',
       cons_conf_idx   DOUBLE comment '消费者信心指数',
       euribor3m       DOUBLE comment '欧元存款利率',
       nr_employed     DOUBLE comment '职工人数',
       fixed_deposit   BIGINT comment '是否有定期存款'
      );
    • 创建分区表bank_data_pt,并添加分区,命令示例如下。
      create table if not exists bank_data_pt
      (
       age             BIGINT comment '年龄',
       job             STRING comment '工作类型',
       marital         STRING comment '婚否',
       education       STRING comment '教育程度',
       housing         STRING comment '是否有房贷',
       loan            STRING comment '是否有贷款',
       contact         STRING comment '联系方式',
       month           STRING comment '月份',
       day_of_week     STRING comment '星期几',
       duration        STRING comment '持续时间',
       campaign        BIGINT comment '本次活动联系的次数',
       pdays           DOUBLE comment '与上一次联系的时间间隔',
       previous        DOUBLE comment '之前与客户联系的次数',
       poutcome        STRING comment '之前市场活动的结果',
       emp_var_rate    DOUBLE comment '就业变化速率',
       cons_price_idx  DOUBLE comment '消费者物价指数',
       cons_conf_idx   DOUBLE comment '消费者信心指数',
       euribor3m       DOUBLE comment '欧元存款利率',
       nr_employed     DOUBLE comment '职工人数',
       fixed_deposit   BIGINT comment '是否有定期存款'
      )partitioned by (credit STRING comment '是否有信用卡');
      
      alter table bank_data_pt add if not exists partition (credit='yes') partition (credit='no') partition (credit='unknown');
    • 创建非分区表result_table1,命令示例如下。
      create table if not exists result_table1
      (
       education   STRING comment '教育程度',
       num         BIGINT comment '人数'
      );
    • 创建非分区表result_table2,命令示例如下。
      create table if not exists result_table2
      (
       education   STRING comment '教育程度',
       num         BIGINT comment '人数',
       credit      STRING comment '是否有信用卡'
      );

步骤三:确认创建结果

创建表后,您需要确认表是否已创建成功,以及表的结构是否正确无误。操作流程如下:

  1. 在MaxCompute客户端,执行如下命令确认表已在MaxCompute项目中。
    show tables;

    创建成功的表会显示在命令返回结果中,返回结果示例如下。

    ALIYUN$****:bank_data
    ALIYUN$****:bank_data_pt
    ALIYUN$****:result_table1
    ALIYUN$****:result_table2
  2. 在MaxCompute客户端,执行如下命令确认表的结构正确无误。
    --查看bank_data表结构。
    desc bank_data;
    --查看bank_data_pt表结构。
    desc bank_data_pt;
    --查看bank_data_pt的分区。
    show partitions bank_data_pt;
    --查看result_table1表结构。
    desc result_table1;
    --查看result_table2表结构。
    desc result_table2;

    以bank_data_pt为例,返回结果如下。

    desc bank_data_pt;
    --返回结果。
    +------------------------------------------------------------------------------------+
    | Owner: ALIYUN$****          | Project: doc_test_dev                                |
    | TableComment:                                                                      |
    +------------------------------------------------------------------------------------+
    | CreateTime:               2021-05-17 14:02:21                                      |
    | LastDDLTime:              2021-05-17 14:02:21                                      |
    | LastModifiedTime:         2021-05-17 14:02:21                                      |
    +------------------------------------------------------------------------------------+
    | InternalTable: YES      | Size: 0                                                  |
    +------------------------------------------------------------------------------------+
    | Native Columns:                                                                    |
    +------------------------------------------------------------------------------------+
    | Field           | Type       | Label | Comment                                     |
    +------------------------------------------------------------------------------------+
    | age             | bigint     |       | 年龄                                        |
    | job             | string     |       | 工作类型                                    |
    | marital         | string     |       | 婚否                                        |
    | education       | string     |       | 教育程度                                    |
    | housing         | string     |       | 是否有房贷                                  |
    | loan            | string     |       | 是否有贷款                                  |
    | contact         | string     |       | 联系方式                                    |
    | month           | string     |       | 月份                                        |
    | day_of_week     | string     |       | 星期几                                      |
    | duration        | string     |       | 持续时间                                    |
    | campaign        | bigint     |       | 本次活动联系的次数                          |
    | pdays           | double     |       | 与上一次联系的时间间隔                      |
    | previous        | double     |       | 之前与客户联系的次数                        |
    | poutcome        | string     |       | 之前市场活动的结果                          |
    | emp_var_rate    | double     |       | 就业变化速率                                |
    | cons_price_idx  | double     |       | 消费者物价指数                              |
    | cons_conf_idx   | double     |       | 消费者信心指数                              |
    | euribor3m       | double     |       | 欧元存款利率                                |
    | nr_employed     | double     |       | 职工人数                                    |
    | fixed_deposit   | bigint     |       | 是否有定期存款                              |
    +------------------------------------------------------------------------------------+
    | Partition Columns:                                                                 |
    +------------------------------------------------------------------------------------+
    | credit          | string     | 是否有信用卡                                        |
    +------------------------------------------------------------------------------------+
    show partitions bank_data_pt;
    --返回结果。
    credit=no
    credit=unknown
    credit=yes

后续步骤

创建表并确认后,即可将数据文件中的数据导入表中,请参见导入数据。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/157998.html

(0)
上一篇 2023年12月10日 上午1:13
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云大数据开发治理平台 DataWorksVertica数据源-云淘科技

    Vertica是一款基于列存储的MPP架构的数据库,Vertica数据源为您提供读取和写入Vertica双向通道的功能,本文为您介绍DataWorks的Vertica数据同步的能力支持情况。 支持的版本 Vertica Reader通过Vertica数据库驱动访问Vertica,您需要确认Vertica驱动和您的Vertica服务之间的兼容能力。数据库驱动使…

  • 阿里云对象存储OSSJava客户端加密-云淘科技

    客户端加密是指将数据发送到OSS之前在用户本地进行加密。 免责声明 使用客户端加密功能时,您需要对主密钥的完整性和正确性负责。因您维护不当导致主密钥用错或丢失,从而导致加密数据无法解密所引起的一切损失和后果均由您自行承担。 在对加密数据进行复制或者迁移时,您需要对加密元信息的完整性和正确性负责。因您维护不当导致加密元信息出错或丢失,从而导致加密数据无法解密所…

    阿里云对象存储 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云ECS云服务器CreateDeploymentSet-云淘科技

    调用CreateDeploymentSet在指定的地域内创建一个部署集。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 请求参数 名称 类型 是否必选 示例值 描述 Action String 是 CreateDeploymentSet 系统规定…

    阿里云服务器 2023年12月9日
  • 阿里云负载均衡CreateLoadBalancerHTTPSListener – 创建HTTPS监听-云淘科技

    创建HTTPS监听。 接口说明 注意事项 新建的监听的状态为stopped。创建完成后,调用StartLoadBalancerListener接口启动监听来转发流量。 前提条件 您已经创建传统型负载均衡,具体操作,请参见CreateLoadBalancer。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,O…

    阿里云负载均衡 2023年12月10日
  • 阿里云大数据开发治理平台 DataWorksCheckMetaTable-云淘科技

    调用CheckMetaTable检查表是否存在。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 请求参数 名称 类型 是否必选 示例值 描述 Action String 是 CheckMetaTable 系统规定参数。取值:CheckMetaTa…

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。