表
更新时间:2024-12-13
表管理
表格信息
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
tableName | String | 是 | 名称,仅支持小写字母、数字和下划线,当前数据库下唯一,长度不大于32个字符 |
tableType | String | 是 | 表格类型,枚举值:管理表(MANAGED), 外部表(EXTERNAL) |
creator | String | 否 | 创建者 |
createTime | String | 否 | 创建时间 |
lastModifyTime | String | 否 | 表最近更新时间 |
description | String | 否 | 描述信息, 长度不大于1024个字符 |
primaryKey | List<String> | 否 | 表格主键信息,目前只支持数据湖格式为hudi,iceberg时填写,其对应iceberg中的identifyfiled |
storage | Storage | 是 | 数据存储格式 |
columns | List<Column> | 是 | 普通字段列表, 【可视化字段编辑】 |
partitions | List<Partition> | 否 | 分区字段列表,【可视化字段编辑】 |
properties | Map<String, String> | 否 | 表格属性,多条key-value组成 |
version | Integer | 否 | 表版本号 |
owner | String | 否 | 负责人名称 |
ownerType | String | 否 | 负责人类型,枚举值:{USER,ROLE ,GROUP} |
authProperties | Map<String, String> | 否 | 安全认证信息 |
安全认证信息authProperties数据结构
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
accessKey | String | 否 | 平台访问密钥 |
secretKey | String | 否 | 平台访问私钥 |
sessionTokenKey | String | 否 | 平台会话级口令密钥 |
authType | String | 否 | 认证类型(UGI,KERBEROS) |
user | String | 是(UGI) | 用户,长度不超过128 |
passwd | String | 是(UGI) | 密码,长度不超过128 |
host | String | 是(KERBEROS) | kerberos kdc host,长度不超过128 |
principal | String | 是(KERBEROS) | kerberos参与者 ,长度不超过128 |
keytab | String | 是(KERBEROS) | keytab文件BASE64编码结果 ,长度不超过1M |
表格存储属性(Storage)
管理表/外表属性说明(tableType=MANAGED/EXTERNAL)
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
format | String | 是 | 文件格式,枚举值见存储格式类型定义 |
locationId | String | 是 | 数据湖存储Id,指定后为table独有的location, tableType=MANAGED或tableType=EXTERNAL |
relativePath | String | 否 | 相对路径,与locationId所指向的目录拼接为表实际存储路径,未指定是默认以表名生成 |
locationUri | String | 否 | 表格存储路径地址 |
fieldDelimiter | String | 是 | 分隔符,如:\t ,format=TEXTFILE时必填,否则不填 |
collectionDelimiter | String | 否 | 集合元素分隔符,字段类型为ARRAY,MAP,STRUCT时选填,其余情况不填 |
mapKeyDelimiter | String | 否 | MAP数据类型中key值分隔符 |
dataLakeType | String | 否 | 数据湖类型,目前支持iceberg,hudi,deltalake |
hudiTableType | String | 否 | hudi表类型 枚举值:COW、MOR,当datalakeType为hudi时此项为必填项 |
hudiQueryTableType | String | 否 | hudi请求表类型 枚举值:RO(读优化表),RT(实时表),OR(原表) 当datalakeType为hudi时此项为必填项 |
存储格式类型定义(format)
枚举值 | 描述 |
---|---|
AVRO | AVRO |
TEXTFILE | 文本格式 |
ORC | ORC |
PARQUET | PARQUET |
RCFILE | RCFILE |
表格字段列表(Column)
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
name | String | 是 | 名称,仅支持小写字母、数字和下划线,以字母开头,长度不大于32个字符 |
type | String | 是 | 类型,见字段类型枚举值描述 |
nullable | Boolean | 是 | 是否能为空,枚举值:true,false |
description | String | 否 | 描述信息,长度不大于1024个字符 |
precision | Integer | 否 | 精度 |
scale | Integer | 否 | 小数位 |
complexTypeDetail | String | 是 | 复杂数据(ARRAY,,MAP,STRUCT)类型详情 |
id | String | 否 | 数据湖格式为iceberg时,系统默认生成,其表示字段的唯一标识符 |
字段类型枚举值
枚举值 | 描述 |
---|---|
TINYINT | 微整型 |
SMALLINT | 短整型 |
INT | 整型 |
BIGINT | 长整型 |
DOUBLE | 双精度浮点数 |
FLOAT | 浮点数 |
DECIMAL | 精确数字类型 |
STRING | 字符 |
VARCHAR | 可变长度字符串 |
CHAR | 固定长度字符串 |
BOOLEAN | 布尔值 |
BYTES | 二进制数据 |
DATE | 日期,文本类型格式为:yyyy-MM-dd |
TIMESTAMP | 时间戳,文本类型格式为: yyyy-MM-dd HH:mm:ss.SSSSSSSSS |
ARRAY | 一组有序字段,ARRAY<data_type> |
MAP | 一组无序的键/值对,MAP<primitive_type, data_type> |
STRUCT | 一组命名的字段,STRUCT<col_name : data_type, ...> |
表格分区信息(Partition)
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
name | String | 是 | 名称,仅支持小写字母、数字和下划线,以字母开头,长度不大于32个字符 |
type | String | 是 | 类型,见分区字段类型枚举值描述 |
precision | Integer | 否 | 精度 |
scale | Integer | 否 | 小数位 |
description | String | 否 | 描述信息,长度不大于1024个字符 |
function | String | 否 | 分区函数,数据湖格式为iceberg时设置,枚举值如结构体Transform Function所示 |
functionParameter | Integer | 否 | 分区函数选择bucket和truncated时填写 |
分区字段类型枚举值
枚举值 | 描述 |
---|---|
TINYINT | 微整型 |
SMALLINT | 短整型 |
INT | 整型 |
BIGINT | 长整型 |
DOUBLE | 双精度浮点数 |
FLOAT | 浮点数 |
DECIMAL | 精确数字类型 |
STRING | 字符 |
VARCHAR | 可变长度字符串 |
CHAR | 固定长度字符串 |
BOOLEAN | 布尔值 |
BYTES | 二进制数据 |
DATE | 日期,文本类型格式为:yyyy-MM-dd |
TIMESTAMP | 时间戳,文本类型格式为: yyyy-MM-dd HH:mm:ss.SSSSSSSSS |
iceberg表格分区函数类型(Transform Function)
枚举值 | 描述 | 支持类型 |
---|---|---|
year | 按年分区 | DATE,TIMESTAMP |
month | 按月分区 | DATE,TIMESTAMP |
day | 按天分区 | DATE,TIMESTAMP |
hour | 按小时分区 | TIMESTAMP |
bucket | 按哈希值modN存储桶分区,填写格式bucket(N,col) | TINYINT,SMALLINT,INT,BIGINT,DECIMAL,DATE,TIMESTAMP,STRING,BYTES |
truncate | 按值截断为L分区,填写格式truncate(L,col) | TINYINT,SMALLINT,INT,BIGINT, DECIMAL,STRING |
ListTables
接口说明
获取表信息列表
请求原型
Plain Text
1GET /v1/database/${databaseName}/table
请求参数
字段 | 类型 | 位置 | 是否必须 | 描述 |
---|---|---|---|---|
databaseName | String | URL | 是 | 数据库名 |
pageNo | Integer | QueryString | 是 | 当前页数 |
pageSize | Integer | QueryString | 是 | 每页条数 |
tableTypes | String | QueryString | 否 | 表的类型,枚举值{MANAGED,EXTERNAL},多个类型筛选时以逗号分隔每种类型。 |
namePattern | String | QueryString | 否 | 搜索关键词 |
响应参数
名称 | 类型 | 描述 |
---|---|---|
pageNo | Integer | 当前页数 |
pageSize | Integer | 每页条数 |
totalCount | Integer | 总数 |
tables | List<TableBaseInfo> | 表基本信息列表 |
TableBaseInfo
名称 | 类型 | 描述 |
---|---|---|
tableName | String | 表名称 |
creator | String | 创建者 |
createTime | String | 创建时间 |
description | String | 描述信息 |
tableType | String | 表类型 |
错误码
公有云标准错误返回码
Code | message | HTTP状态码 | 描述 |
---|---|---|---|
DatabaseNotFound | Database not found. | 404 | 数据库不存在 |
InternalError | We encountered an internal error. Please try again. | 500 | 服务器内不错误 |
请求示例
Plain Text
1GET /v1/database/db_01/table?pageNo=1&pageSize=10 HTTP/1.1
2Host: edap.bj.baidubce.com
3Content-Length: 0
响应示例
Plain Text
1HTTP/1.1 200 OK
2Content-Length: xxxx
3Content-Type: application/json
4{
5 "pageNo": 1,
6 "pageSize": 10,
7 "tables": [
8 {
9 "createTime": "2024-02-01T09:13:17Z",
10 "creator": "root",
11 "description": "complex table",
12 "tableName": "tab1",
13 "tableType": "MANAGED"
14 },
15 {
16 "createTime": "2024-01-25T07:01:41Z",
17 "creator": "root",
18 "description": "this a external table",
19 "tableName": "es_tab",
20 "tableType": "EXTERNAL"
21 }
22 ],
23 "totalCount": 2
24}
ListTableNames
接口说明
获取表名称列表
请求原型
Plain Text
1GET /v1/database/${databaseName}/table?name
请求参数
字段 | 类型 | 位置 | 是否必须 | 描述 |
---|---|---|---|---|
databaseName | String | URL | 是 | 数据库名 |
pageNo | Integer | QueryString | 是 | 当前页数 |
pageSize | Integer | QueryString | 是 | 每页条数 |
tableTypes | String | QueryString | 否 | 表的类型,枚举值{MANAGED,EXTERNAL,VIRTUAL_VIEW,MATERIALIZED_VIEW,MAPPING},多个类型筛选时以逗号分隔每种类型。 |
namePattern | String | QueryString | 否 | 搜索关键词 |
响应参数
名称 | 类型 | 描述 |
---|---|---|
tableNames | List<String> | 表的名称列表 |
pageNo | Integer | 当前页数 |
pageSize | Integer | 每页条数 |
totalCount | Integer | 总数 |
错误码
公有云标准错误返回码
Code | message | HTTP状态码 | 描述 |
---|---|---|---|
DatabaseNotFound | Database not found. | 404 | 数据库不存在 |
InternalError | We encountered an internal error. Please try again. | 500 | 服务器内不错误 |
请求示例
Plain Text
1GET /v1/database/db_01/table?name&pageNo=1&pageSize=10 HTTP/1.1
2
3Host: edap.bj.baidubce.com
4
5Content-Length: 0
响应示例
Plain Text
1HTTP/1.1 200 OK
2
3Content-Length: xxxx
4
5Content-Type: application/json
GetTable
接口说明
获取表信息
请求原型
Plain Text
1GET /v1/database/${databaseName}/table/${tableName}
请求参数
名称 | 类型 | 位置 | 必须 | 描述 |
---|---|---|---|---|
databaseName | String | URL | 是 | 数据库名称 |
tableName | String | URL | 是 | 表名称 |
needAuthProperties | Boolean | QueryString | 否 | 是否需要返回安全认证信息, 默认false |
响应参数
参见Table对象参数说明
错误码
公有云标准错误返回码
Code | message | HTTP状态码 | 描述 |
---|---|---|---|
DatabaseNotFound | Database not found. | 404 | 数据库不存在 |
TableNotFound | Table not found. | 404 | 表不存在 |
InternalError | We encountered an internal error. Please try again. | 500 | 服务器内不错误 |
请求示例
Plain Text
1GET /v1/database/db_01/table/tb_01?needAuthProperties=true HTTP/1.1
2
3Host: edap.bj.baidubce.com
4
5Content-Length:0
响应示例
Plain Text
1HTTP/1.1 200 OK
2
3Content-Length: xxxx
4
5Content-Type: application/json
6{
7 "columns": [
8 {
9 "description": "id",
10 "name": "id",
11 "nullable": false,
12 "type": "STRING"
13 },
14 {
15 "complexTypeDetail": "<string,int>",
16 "description": "map column",
17 "name": "map_column",
18 "nullable": false,
19 "type": "MAP"
20 }
21 ],
22 "createTime": "2024-02-01T09:13:17Z",
23 "creator": "root",
24 "description": "complex table",
25 "lastModifyTime": "2024-02-01T09:13:17Z",
26 "partitions": [
27 {
28 "description": "",
29 "name": "par",
30 "type": "STRING"
31 }
32 ],
33 "properties": {
34 "skip.header.line.count": "1"
35 },
36 "authProperties": {
37 "accessKey": "key1",
38 "secretKey": "key2",
39 "sessionTokenKey": "key3"
40 },
41 "storage": {
42 "collectionDelimiter": "|",
43 "fieldDelimiter": ",",
44 "format": "TEXTFILE",
45 "mapKeyDelimiter": ":",
46 "locationId": "loc1",
47 "relativePath": "tb_01",
48 "locationUri": "bos://edap/db_01/tb_01"
49 },
50 "tableName": "tb_01",
51 "tableType": "MANAGED",
52 "version": 1
53}
CreateTable
接口说明
创建表
请求原型
Plain Text
1POST /v1/database/${databaseName}/table
请求参数
字段 | 类型 | 位置 | 是否必须 | 描述 |
---|---|---|---|---|
databaseName | String | URL | 是 | 数据库名 |
tableName | String | Body | 是 | 表名称,支持字母、数字和下划线,当前数据库下唯一,长度不大于32个字符 |
tableType | String | Body | 是 | 表类型,枚举值:映射表(MAPPING) 管理表(MANAGED), 外部表(EXTERNAL), 视图(VIRTUAL_VIEW), 物化视图(MATERIALIZED_VIEW) |
storage | Storge | Body | 是 | 参考Stroge对象说明,不同表类型填写对应参数 |
columns | Column | Body | 是 | 参考Column对象说明 |
partitions | Partition | Body | 否 | 参考Partition对象说明 |
owner | String | Body | 否 | 负责人名称 |
ownerType | String | Body | 否 | 负责人类型,枚举值:{USER,ROLE ,GROUP} |
properties | Map | Body | 否 | 定义表的参数和属性的键值对 |
description | String | Body | 否 | 描述信息,长度不大于1024个字符 |
响应参数
除公共响应参数外,无特殊响应。
错误码
公有云标准错误返回码
Code | message | HTTP状态码 | 描述 |
---|---|---|---|
BadRequest | Bad request, please check your request | 400 | 请求体规则校验错误 |
AccessDenied | Access Denied. | 403 | 无权限 |
DatabaseNotFound | Database not found. | 404 | 数据库不存在 |
TableNotFound | Table not found. | 404 | 表不存在 |
TableAlreadyExist | Table already exist. | 409 | 表已存在 |
InternalError | We encountered an internal error. Please try again. | 500 | 服务器内不错误 |
请求示例
Plain Text
1{
2 "tableName": "tab1",
3 "description": "this is a table",
4 "tableType": "MANAGED",
5 "partitions": [
6 {
7 "name": "c",
8 "type": "STRING",
9 "description": "c"
10 }
11 ],
12 "storage": {
13 "format": "PARQUET",
14 "locationId": "loc",
15 "relativePath": "tab1"
16 },
17 "columns": [
18 {
19 "name": "a",
20 "type": "STRING",
21 "description": "a",
22 "nullable": false
23 }
24 ],
25 "properties": {
26 "skip.header.line.count": "1"
27 }
28}
响应示例
Plain Text
1HTTP/1.1 204 No Content
2
3Content-Length: 0
UpdateTable
接口说明
更新表格信息,可更新信息包括,表名,表描述信息,字段信息,分区信息,表参数, 数据存储格式
请求原型
Plain Text
1PUT /v1/database/${databaseName}/table/${tableName}
请求参数
字段 | 类型 | 位置 | 是否必须 | 描述 |
---|---|---|---|---|
databaseName | String | URL | 是 | 数据库名 |
tableName | String | URL | 是 | 表名 |
tableName | String | Body | 是 | 表名称,支持字母、数字和下划线,当前数据库下唯一,长度不大于32个字符 |
tableType | String | Body | 是 | 表类型,枚举值:映射表(MAPPING) 管理表(MANAGED), 外部表(EXTERNAL), 视图(VIRTUAL_VIEW), 物化视图(MATERIALIZED_VIEW) |
storage | Storge | Body | 是 | 参考Stroge对象说明,不同表类型填写对应参数 |
columns | Column | Body | 是 | 参考Column对象说明 |
partitions | Partition | Body | 否 | 参考Partition对象说明 |
owner | String | Body | 否 | 负责人名称 |
ownerType | String | Body | 否 | 负责人类型,枚举值:{USER,ROLE ,GROUP} |
properties | Map | Body | 否 | 定义表的参数和属性的键值对 |
description | String | Body | 否 | 描述信息,长度不大于1024个字符 |
响应参数
除公共响应参数外,无特殊响应。
错误码
公有云标准错误返回码
Code | message | HTTP状态码 | 描述 |
---|---|---|---|
BadRequest | Bad request, please check your request | 400 | 请求体规则校验错误 |
AccessDenied | Access Denied. | 403 | 无权限 |
DatabaseNotFound | Database not found. | 404 | 数据库不存在 |
TableNotFound | Table not found. | 404 | 表不存在 |
TableAlreadyExist | Table already exist. | 409 | 表已存在 |
InternalError | We encountered an internal error. Please try again. | 500 | 服务器内不错误 |
请求示例
Plain Text
1PUT /v1/database/db_01/table/tb_01 HTTP/1.1
2
3Host: edap.bj.baidubce.com
4
5Content-Length: xxx
6
7Content-Type: application/json
8{
9 "tableName": "tb_02",
10 "description": "描述信息",
11 "storage": {
12 "format": "TEXTFILE",
13 "fieldDelimiter": "\t",
14 "locationId": "lc_02",
15 "relativePath": "tb_02"
16 },
17 "properties": {
18 "transactional": "false",
19 "skip.header.line.count": "1"
20 },
21 "columns": [
22 {
23 "name": "a",
24 "type": "STRING",
25 "description": "a",
26 "nullable": false
27 },
28 {
29 "name": "height",
30 "type": "decimal",
31 "nullable": true,
32 "description": "高度",
33 "precision": 18,
34 "scale": 18
35 }
36 ],
37 "partitions": [
38 {
39 "name": "c",
40 "type": "STRING",
41 "description": "c"
42 }
43 ]
44}
响应示例
Plain Text
1HTTP/1.1 204 No Content
2
3Content-Length: 0
DeleteTable
接口说明
删除表,MANAGED类型表格在删除时,同时清空表真实数据。
请求原型
Plain Text
1DELETE /v1/database/${databaseName}/table/${tableName}
请求参数
字段 | 类型 | 位置 | 是否必须 | 描述 |
---|---|---|---|---|
databaseName | String | URL | 是 | 数据库名 |
tableName | String | URL | 是 | 表名 |
响应参数
除公共响应参数外,无特殊响应。
错误码
公有云标准错误返回码
Code | message | HTTP状态码 | 描述 |
---|---|---|---|
BadRequest | Bad request, please check your request | 400 | 请求体规则校验错误 |
AccessDenied | Access Denied. | 403 | 无权限 |
DatabaseNotFound | Database not found. | 404 | 数据库不存在 |
TableNotFound | Table not found. | 404 | 表不存在 |
InternalError | We encountered an internal error. Please try again. | 500 | 服务器内不错误 |
请求示例
Plain Text
1DELETE /v1/database/db_01/table/tb_01 HTTP/1.1
2
3Host: edap.bj.baidubce.com
4
5Content-Length: 0
响应示例
Plain Text
1HTTP/1.1 204 No Content
2
3Content-Length: 0
ListTableVersions
接口说明
获取表格版本信息列表
请求原型
Plain Text
1GET /v1/database/${databaseName}/table/${tableName}?versionList
请求参数
名称 | 类型 | 位置 | 是否必须 | 描述 |
---|---|---|---|---|
databaseName | String | URL | 是 | 库名 |
tableName | String | URL | 是 | 表名 |
pageNo | Integer | QueryString | 是 | 当前页数 |
pageSize | Integer | QueryString | 是 | 每页条数 |
startTime | String | QueryString | 否 | 开始时间 |
endTime | String | QueryString | 否 | 结束时间 |
响应参数
名称 | 类型 | 描述 |
---|---|---|
pageNo | Integer | 当前页数 |
pageSize | Integer | 每页条数 |
totalCount | Integer | 总数 |
versions | List<TableVersion> | 表格版本信息 |
TableVersion
名称 | 类型 | 描述 |
---|---|---|
version | Int | 表格版本号 |
creator | String | 创建者 |
createTime | String | 创建时间 |
错误码
公有云标准错误返回码
Code | message | HTTP状态码 | 描述 |
---|---|---|---|
BadRequest | Bad request, please check your request | 400 | 请求体规则校验错误 |
DatabaseNotFound | Database not found. | 404 | 数据库不存在 |
TableNotFound | Table not found. | 404 | 表不存在 |
InternalError | We encountered an internal error. Please try again. | 500 | 服务器内不错误 |
请求示例
Plain Text
1GET /v1/database/default/table/tb?versionList&pageNo=1&pageSize=10 HTTP/1.1
2
3Host: edap.bj.baidubce.com
4
5Content-Length: 0
响应示例
Plain Text
1HTTP/1.1 200 OK
2
3Content-Length: xxxx
4
5Content-Type: application/json
6{
7 "pageNo": 1,
8 "pageSize": 10,
9 "totalCount": 2,
10 "versions": [
11 {
12 "version": 0,
13 "creator": "user_1",
14 "createTime": "2019-06-01T23:00:10Z"
15 },
16 {
17 "version": 1,
18 "creator": "user_2",
19 "createTime": "2020-06-01T23:00:10Z"
20 }
21 ]
22}
GetTableByVersion
接口说明
获取指定版本的表格信息
请求原型
Plain Text
1GET /v1/database/${databaseName}/table/${tableName}?version
请求参数
名称 | 类型 | 位置 | 是否必须 | 描述 |
---|---|---|---|---|
databaseName | String | URL | 是 | 库名 |
tableName | String | URL | 是 | 表名 |
version | Integer | QueryString | 是 | 表格版本号 |
响应参数
参见Table对象参数说明
错误码
公有云标准错误返回码
Code | message | HTTP状态码 | 描述 |
---|---|---|---|
BadRequest | Bad request, please check your request | 400 | 请求体规则校验错误 |
DatabaseNotFound | Database not found. | 404 | 数据库不存在 |
TableNotFound | Table not found. | 404 | 表不存在 |
InternalError | We encountered an internal error. Please try again. | 500 | 服务器内不错误 |
请求示例
Plain Text
1GET /v1/database/db_01/table/tb_01?version=2 HTTP/1.1
2
3Host: edap.bj.baidubce.com
4
5Content-Length:0
响应示例
Plain Text
1HTTP/1.1 200 OK
2
3Content-Length: xxxx
4
5Content-Type: application/json
6{
7 "columns": [
8 {
9 "description": "id",
10 "name": "id",
11 "nullable": false,
12 "type": "STRING"
13 },
14 {
15 "complexTypeDetail": "<string,int>",
16 "description": "map column",
17 "name": "map_column",
18 "nullable": false,
19 "type": "MAP"
20 }
21 ],
22 "createTime": "2024-02-01T09:13:17Z",
23 "creator": "root",
24 "description": "complex table",
25 "lastModifyTime": "2024-02-01T09:13:17Z",
26 "partitions": [
27 {
28 "description": "",
29 "name": "par",
30 "nullable": false,
31 "type": "STRING"
32 }
33 ],
34 "properties": {
35 "skip.header.line.count": "1"
36 },
37 "storage": {
38 "collectionDelimiter": "|",
39 "fieldDelimiter": ",",
40 "format": "TEXTFILE",
41 "mapKeyDelimiter": ":",
42 "locationId": "lc_02",
43 "relativePath": "tb_01",
44 "location": "bos://edap/db_01/tb_01"
45 },
46 "tableName": "tb_01",
47 "tableType": "MANAGED",
48 "version": 2
49}