华为云用户手册

  • 错误响应Body体格式说明 当接口调用出错时,会返回错误码及错误信息说明,错误响应的Body体格式如下所示。 { "error_msg": "The format of message is error", "error_code": " DLI .0001" } 其中,error_code表示错误码,error_msg表示错误描述信息。 表1 异常响应说明 名称 参数类型 说明 error_code String 错误码,请参见表2。 error_msg String 错误详细信息。
  • 示例 请求样例: { "job_id":"6b29eb77-4c16-4e74-838a-2cf7959e9203" } 成功响应样例: { "is_success":"true", "message": "check upload id success", "mask":[ "mask_str_01", "mask_str_02" ] } 调用API出错后,将不会返回上述结果,而是返回错误码和错误信息,详细介绍请参见错误码。
  • 响应示例 { "is_success": true, "message": "", "privileges": [ { "object": "databases.dsstest.tables.obs_2312", "privileges": [ "DESCRIBE_TABLE" ] }, { "object": "databases.dsstest.tables.obs_2312.columns.id", "privileges": [ "SELECT" ] } ], "user_name": "scuser1" }
  • 响应消息 表2 响应参数 参数名称 是否必选 参数类型 说明 is_success 否 Boolean 执行请求是否成功。“true”表示请求执行成功。示例值:true. message 否 String 系统提示信息,执行成功时,信息可能为空。示例值:空。 user_name 否 String 被查询的用户名称。 privileges 否 Array Of objects 权限信息。具体参数请参见表3。 表3 privileges参数 参数名称 是否必选 参数类型 说明 object 否 String 该用户有权限的对象: “databases.数据库名.tables.表名”,用户在当前表上的权限。 “databases.数据库名.tables.表名.columns.列名”,用户在列上的权限。 示例值:databases.dsstest.tables.obs_231。 privileges 否 Array of Strings 用户在指定对象上的权限。示例值:["DESCRIBE_TABLE" ]。 表相关的权限说明请参考权限管理。
  • URI URI格式: GET /v1.0/{project_id}/databases/{database_name}/tables/{table_name}/users/{user_name} 参数说明 表1 URI 参数 参数名称 是否必选 参数类型 说明 project_id 是 String 项目编号,用于资源隔离。获取方式请参考获取项目ID。 database_name 是 String 被查询的表所在的数据库名称。 table_name 是 String 被查询的表名称。 user_name 是 String 被查询的用户名称。
  • 响应示例 { "is_success": true, "message": "", "privileges": [ { "is_admin": false, "object": "databases.dsstest.tables.csv_par_table", "privileges": [ "SELECT" ], "user_name": "tent2" }, { "is_admin": true, "object": "databases.dsstest.tables.csv_par_table", "privileges": [ "ALL" ], "user_name": "tent4" } ] } 调用API出错后,将不会返回上述结果,而是返回错误码和错误信息,详细介绍请参见错误码。
  • URI URI格式: GET /v1.0/{project_id}/databases/{database_name}/tables/{table_name}/users 参数说明 表1 URI 参数 参数名称 是否必选 说明 project_id 是 项目编号,用于资源隔离。获取方式请参考获取项目ID。 database_name 是 被查询的表所在的数据库名称。 table_name 是 被查询的表名称。
  • 响应示例 { "is_success": true, "message": "", "database_name": "dsstest", "privileges": [ { "is_admin": true, "privileges": [ "ALL" ], "user_name": "test" }, { "is_admin": false, "privileges": [ "ALTER_TABLE_ADD_PARTITION" ], "user_name": "scuser1" }, { "is_admin": false, "privileges": [ "CREATE_TABLE" ], "user_name": "scuser2" } ] } 调用API出错后,将不会返回上述结果,而是返回错误码和错误信息,详细介绍请参见错误码。
  • 响应消息 表2 响应参数 参数名称 是否必选 参数类型 说明 is_success 否 Boolean 执行请求是否成功。“true”表示请求执行成功。示例值:true。 message 否 String 系统提示信息,执行成功时,信息可能为空。示例值:空。 database_name 否 String 被查询的数据库名称。示例值:dsstest。 privileges 否 Array of objects 权限信息。具体参数请参考表3。 表3 privileges参数 参数名称 是否必选 参数类型 说明 is_admin 否 Boolean 判断用户是否为管理员。示例值:true。 user_name 否 String 用户名称,即该用户在当前数据库上有权限。示例值:test。 privileges 否 Array of Strings 该用户在数据库上的权限。具体权限信息可以参考数据权限列表。示例值: ["ALTER_TABLE_ADD_PARTITION"]。
  • 请求消息 表2 请求参数 参数名称 是否必选 参数类型 说明 user_name 是 String 被赋权的用户名称,该用户将有权访问指定的数据库或数据表,被收回或者更新访问权限。示例值:user2。 action 是 String 指定赋权或回收。值为:grant,revoke或update。示例值:grant。 grant:赋权。 revoke:回收权限。 update:清空原来的所有权限,赋予本次提供的权限数组中的权限。 说明: 当用户同时拥有grant和revoke权限的时候才有权限使用update操作。 privileges 是 Array of Objects 赋权信息。具体参数请参考表3。示例值: [ {"object": "databases.db1.tables.tb2.columns.column1","privileges": ["SELECT"]},"object": "databases.db1.tables.tbl","privileges": [ "DROP_TABLE"] 表3 privileges参数 参数名称 是否必选 参数类型 说明 object 是 String 被赋权的数据对象,命名方式为: “databases.数据库名”,数据库下面的所有数据都将被共享。 “databases.数据库名.tables.表名”,指定的表的数据将被共享。 “databases.数据库名.tables.表名.columns.列名”,指定的列将被共享。 “jobs.flink.flink作业ID”,指定的作业将被共享。 “groups.程序包组名”,指定的程序包组将被共享。 “resources.程序包名”,指定程序包将被共享。 示例值:databases.db1.tables.tb2.columns.column1。 privileges 是 Array of Strings 待赋权,回收或更新的权限列表。具体支持的权限列表详细可以参考数据权限列表。示例值:["SELECT"]。 说明: 若“action”为“update”,更新列表为空,则表示回收用户在该数据库或表的所有权限。
  • 请求示例 赋予用户user2数据库db1的查询权限、数据表db1.tbl的删除权限、数据表指定列db1.tbl.column1的查询权限 { "user_name": "user2", "action": "grant", "privileges": [ { "object": "databases.db1.tables.tb2.columns.column1", "privileges": [ "SELECT" ] }, { "object": "databases.db1.tables.tbl", "privileges": [ "DROP_TABLE" ] }, { "object": "databases.db1", "privileges": [ "SELECT" ] } ] }
  • URI URI格式: GET /v1.0/{project_id}/queues/{queue_name}/users 参数说明 表1 URI 参数 参数名称 是否必选 参数类型 说明 project_id 是 String 项目编号,用于资源隔离。获取方式请参考获取项目ID。 queue_name 是 String 队列名称。 表2 query参数 参数名称 是否必选 参数类型 说明 limit 是 Integer 分页查询数量。 offset 是 Integer 分页查询偏移量。
  • 响应示例 { "is_success": true, "message": "", "count": 2, "privileges": [ { "is_admin": true, "privileges": [ "ALL" ], "user_name": "tenant1" }, { "is_admin": false, "privileges": [ "SUBMIT_JOB" ], "user_name": "user2" } ], "queue_name": "queue1" }
  • 响应消息 表3 响应参数 参数名称 是否必选 参数类型 说明 is_success 否 Boolean 执行请求是否成功。“true”表示请求执行成功。示例值:true。 message 否 String 系统提示信息,执行成功时,信息可能为空。示例值:空。 queue_name 否 String 队列名称。示例值:queue1。 privileges 否 Array of Object 有权限使用该队列的用户及其对应的权限数组。 具体参数请参考表4。 count 否 Long 用户的总个数。 表4 privileges参数 参数名称 是否必选 参数类型 说明 is_admin 否 Boolean 判断用户是否为管理员。示例值:false。 user_name 否 String 用户名称,即该用户在当前队列上有权限。示例值:user2。 privileges 否 Array of Strings 该用户在队列上的权限。示例值:["SUBMIT_JOB"]。
  • 请求消息 表2 请求参数 参数名称 是否必选 参数类型 说明 queue_name 是 String 队列名称。示例值:queue1。 user_name 是 String 被赋权用户名称。给该用户赋使用队列的权限,回收其使用权限,或者更新其使用权限。示例值:tenant2。 action 是 String 指定赋权或回收。值为:grant,revoke或update。当用户同时拥有grant和revoke权限的时候才有权限使用update操作。示例值:grant。 grant:赋权。 revoke:回收权限。 update:清空原来的所有权限,赋予本次提供的权限数组中的权限。 privileges 是 Array of Strings 待赋权、回收或更新的权限列表。可操作的权限可以是以下权限中的一种或多种。示例值:["DROP_QUEUE", "SUBMIT_JOB"]。 SUBMIT_JOB:提交作业 CANCEL_JOB :取消作业 DROP_QUEUE :删除队列 GRANT_PRIVILEGE: 赋权 REVOKE_PRIVILEGE:权限回收 SHOW_PRIVILEGES:查看其它用户具备的权限 RESTART:重启队列 SCALE_QUEUE:规格变更 说明: 若需更新的权限列表为空,则表示回收用户在该队列的所有权限。
  • URI URI格式: DELETE /v1.0/{project_id}/databases/{database_name}/tables/{table_name} 参数说明 表1 URI 参数 参数名称 是否必选 参数类型 说明 project_id 是 String 项目编号,用于资源隔离。获取方式请参考获取项目ID。 database_name 是 String 待删除的表所在的数据库名称。 table_name 是 String 待删除的表名称。 表2 query参数 参数名称 是否必选 参数类型 说明 async 否 Boolean 是否异步方式删除数据库,取值为“true”或者“false”。默认值为:false。 带入query参数的URL示例如下: DELETE /v1.0/{project_id}/databases/{database_name}/tables/{table_name}?async={is_async}
  • 请求示例 创建一个data_location为OBS表,数据格式为 CS V。 { "table_name": "tb1", "data_location": "OBS", "description": "", "data_type": "csv", "data_path": "obs://obs/path1", "columns": [ { "column_name": "column1", "type": "string", "description": "", "is_partition_column": true }, { "column_name": "column2", "type": "string", "description": "", "is_partition_column": false } ], "with_column_header": true, "delimiter": ",", "quote_char": "\"", "escape_char": "\\", "date_format": "yyyy-MM-dd", "timestamp_format": "yyyy-MM-dd HH:mm:ss" } “date_format”和“timestamp_format”的格式需与导入的csv文件中的时间格式一致。 创建data_location为DLI的表。 { "table_name": "tb2", "data_location": "DLI", "columns": [ { "column_name": "column1", "type": "string", "description": "", "is_partition_column": true }, { "column_name": "column2", "type": "string", "description": "", "is_partition_column": false } ], "tags": [ { "key": "quarterly", "value": "Q3" }, { "key": "author", "value": "user" } ] } 创建一个data_location为VIEW表。 { "table_name": "tb3", "data_location": "VIEW", "columns": [ { "column_name": "column1", "type": "string", "description": "", "is_partition_column": true }, { "column_name": "column2", "type": "string", "description": "", "is_partition_column": false } ], "select_statement": "select * from db1.tb1" }
  • 请求消息 表2 请求参数 参数名称 是否必选 参数类型 说明 table_name 是 String 新增表名称。 表名称只能包含数字、英文字母和下划线,但不能是纯数字,且不能以下划线开头。 表名称大小写不敏感且不能为空。 表名称支持包含“$”符号。例如:$test。 输入长度不能超过128个字符。 data_location 是 String 数据存储的地方。范围为: OBS:OBS表。 DLI:DLI表。 VIEW:VIEW表。 description 否 String 新增表的描述信息。 columns 是 Array of Objects 新增表的列。列相关参数请参考表4。data_location为VIEW时可不填写。 select_statement 否 String 创建视图时依赖的查找语句。查找语句中的表需要附加所属数据库,即 “数据库.数据表”格式。data_location为VIEW时填写。 data_type 否 String 新增OBS表数据的类型,目前支持:Parquet、ORC、CSV、JSON和Avro格式。 说明: OBS表必选参数。 data_path 否 String 新增OBS表数据的存储路径,必须是OBS的路径。 说明: OBS表必选参数。 data_path配置的OBS桶路径不建议为根目录,否则清空表数据的时候,就会把根目录内的数据全部清除,导致数据丢失。 with_column_header 否 Boolean OBS表数据是否包含表头。只有CSV类型数据具有该属性。data_location为OBS时填写。 delimiter 否 String 用户自定义数据分隔符。只有CSV类型数据具有该属性。data_location为OBS时填写。 quote_char 否 String 用户自定义引用字符,默认为双引号(即“\"”)。只有CSV类型数据具有该属性。data_location为OBS时填写。 escape_char 否 String 用户自定义转义字符,默认为反斜杠(即"\\")。只有CSV类型数据具有该属性。data_location为OBS时填写。 date_format 否 String 用户自定义日期类型,默认格式为“yyyy-MM-dd”。日期格式字符定义详见表3。只有CSV和JSON类型数据具有该属性。data_location为OBS时填写。 timestamp_format 否 String 用户自定义时间类型。默认格式为“yyyy-MM-dd HH:mm:ss”。时间戳格式字符定义详见表3。只有CSV和JSON类型数据具有该属性。data_location为OBS时填写。 tags 否 Array of Objects 数据库的标签。具体请参考tags参数。 表3 tags参数 参数名称 是否必选 参数类型 说明 key 是 String 标签的键。 说明: 标签的键的最大长度为128个字符,标签的键可以包含任意语种字母、数字、空格和_ . : =+-@ ,但首尾不能含有空格,不能以_sys_开头。 value 是 String 标签的值。 说明: 标签值的最大长度为255个字符,标签的值可以包含任意语种字母、数字、空格和_ . : =+-@ ,但首尾不能含有空格。 表4 columns参数 参数名称 是否必选 参数类型 说明 column_name 是 String 列的名称。 type 是 String 列的数据类型。具体支持的数据类型请参考数据类型。 description 否 String 列的描述信息。 is_partition_column 否 Boolean 表示该列是否为分区列。“true”表示为分区列,“false”为非分区列,默认为“false”。 说明: 创建分区表时,需要保证表中至少有一列为非分区列。详见“请求样例”。
  • 响应示例 MANAGED类型表 { "is_success": true, "message": "", "column_count": 3, "columns": [ { "column_name": "id", "description": "", "type": "int", "is_partition_column": false }, { "column_name": "name", "description": "", "type": "string", "is_partition_column": false }, { "column_name": "level", "description": "", "type": "string", "is_partition_column": true } ], "table_type":"MANAGED" } EXTERNAL类型表 { "is_success": true, "message": "", "column_count": 2, "columns": [ { "type": "string", "description": "", "column_name": "col2", "is_partition_column": false }, { "type": "string", "description": "", "column_name": "col1", "is_partition_column": true } ], "table_type": "EXTERNAL", "data_type": "parquet", "data_location": "obs://obs-wangtao/savepoint/savepoint-d95437-039668840fff/_metadata", "storage_properties": [ { "key": "timestampformat", "value": "yyyy-MM-dd HH:mm:ss" }, { "key": "quote", "value": "\"" }, { "key": "dateformat", "value": "yyyy-MM-dd" }, { "key": "escape", "value": "\\" }, { "key": "header", "value": "false" }, { "key": "delimiter", "value": "," } ], "table_comment": "", "create_table_sql": "CREATE TABLE `default`.`wan_test` (`col2` STRING, `col1` STRING)\nUSING parquet\nOPTIONS (\n `timestampformat` 'yyyy-MM-dd HH:mm:ss',\n `quote` '\"',\n `dateformat` 'yyyy-MM-dd',\n `escape` '\\\\',\n `header` 'false',\n `delimiter` ','\n)\nPARTITIONED BY (col1)\nCOMMENT ''\nLOCATION 'obs://obs-wangtao/savepoint/savepoint-d95437-039668840fff/_metadata'\nTBLPROPERTIES (\n 'hive.serialization.extend.nesting.levels' = 'true'\n)\n" } VIEW类型表 { "is_success": true, "message": "", "column_count": 3, "columns": [ { "column_name": "id", "description": "", "type": "int", "is_partition_column": false }, { "column_name": "name", "description": "", "type": "string", "is_partition_column": false }, { "column_name": "level", "description": "", "type": "string", "is_partition_column": true } ], "table_type":"VIEW", "create_table_sql": "CREATE VIEW `default`.`view1`(id, name) AS\nselect * from a_gff.testtable\n" }
  • 响应消息 表2 响应参数 参数名称 是否必选 参数类型 说明 is_success 是 Boolean 执行请求是否成功。“true”表示请求执行成功。 message 是 String 系统提示信息,执行成功时,信息可能为空。 column_count 是 Integer 表的总列数。 columns 是 Array of Objects 表的列信息,包含列名称、类型和描述信息。具体参数详见表3。 table_type 是 String 表类型,包括: “MANAGED”:DLI表。 “EXTERNAL”:OBS表。 “VIEW”:VIEW视图。 data_type 否 String 数据类型,包括“csv”,“parquet”,“orc”,“json”和“avro”。 data_location 否 String 数据存储的路径,为OBS路径。 storage_properties 否 Array of Objects 存储属性,以“key/value”的格式出现,包含delimiter,escape,quote,header,dateformat,timestampformat参数。 table_comment 否 String 表的注释。 create_table_sql 否 String 该表的建表语句。 表3 columns参数 参数名称 是否必选 参数类型 说明 column_name 是 String 列名称。 description 是 String 列描述信息。 type 是 String 列数据类型。 is_partition_column 是 Boolean 表示该列是否为分区列,“true”表示为分区列,“false”为非分区列,默认为“false”。
  • URI URI格式: GET /v1.0/{project_id}/databases/{database_name}/tables/{table_name} 参数说明 表1 URI 参数 参数名称 是否必选 参数类型 说明 project_id 是 String 项目编号,用于资源隔离。获取方式请参考获取项目ID。 database_name 是 String 待描述的表所在的数据库名称。 table_name 是 String 待描述表的名称。
  • 响应消息 表2 响应参数 参数 是否必选 参数类型 说明 is_success 是 Boolean 执行请求是否成功。“true”表示请求执行成功。 message 是 String 系统提示信息,执行成功时,信息可能为空。 table_count 是 Integer 表的总个数。 tables 是 Array of objects 表的信息。具体参数请参见表3。 表3 tables参数 参数 是否必选 参数类型 说明 create_time 是 Long 表创建时间。是单位为“毫秒”的时间戳。 data_type 否 String 所列OBS表数据的类型,目前支持:parquet、ORC、CSV、JSON格式。只有OBS表有该参数,DLI表没有该参数。 data_location 是 String 数据存储的地方,分OBS表、DLI表,View。 last_access_time 是 Long 最近更新时间。是单位为“毫秒”的时间戳。 location 否 String OBS表上的存储路径。 owner 是 String 表创建者。 table_name 是 String 表名称。 table_size 是 Long DLI表的大小。非DLI表该参数值为0。 table_type 是 String 表类型。 OBS表为EXTERNAL DLI表为MANAGED View为VIEW partition_columns 否 Array of Strings 分区字段。只有OBS分区表有该参数,其他表没有该参数。 若URI中的过滤条件“with-detail=false”,则只返回“data_location”,“table_name”,“table_type”三个参数。
  • URI URI格式: GET /v1.0/{project_id}/databases/{database_name}?keyword=tb&with-detail=true 参数说明 表1 URI 参数 名称 是否必选 说明 project_id 是 项目编号,用于资源隔离。获取方式请参考获取项目ID。 database_name 是 查看表所在的数据库名称。 keyword 否 过滤表名称的关键词。 with-detail 否 是否获取表的详细信息(所有者,size等)。
  • 示例 请求样例: None 成功响应样例: { "is_success": true, "message": "", "table_count": 1, "tables": [ { "create_time":1517364268000, "data_location":"OBS", "data_type":"csv", "last_access_time":1517364268000, "location":"obs://DLI/sqldata/data.txt", "owner":"test", "partition_columns": ["a0"], "table_name":"obs_t", "table_size":0, "table_type":"EXTERNAL" } ] } 调用API出错后,将不会返回上述结果,而是返回错误码和错误信息,详细介绍请参见错误码。
  • 响应示例 同步方式请求成功响应样例: { "is_success": true, "message": "", "job_mode": "sync" } 异步方式请求成功响应样例: { "is_success": true, "message": "", "job_id": "208b08d4-0dc2-4dd7-8879-ddd4c020d7aa", "job_type": "DDL", "job_mode": "async" } 如果通过异步方式删除数据库,可以通过查询作业状态接口查看当前作业的状态,详细介绍参见查询作业状态。 如果强制删除数据库cascade=true,则会级联删除该数据库下面的所有表,需要谨慎使用。
  • 响应消息 表3 响应参数 参数名称 是否必选 参数类型 说明 is_success 否 Boolean 执行请求是否成功。“true”表示请求执行成功。 message 否 String 系统提示信息,执行成功时,信息为空。 job_id 否 String 返回作业的ID,可用于获取作业状态和作业结果。 job_type 否 String 作业类型。 DDL DCL IMPORT EXPORT QUERY INSERT job_mode 否 String 作业执行模式: async:异步 sync:同步
  • URI URI格式: DELETE /v1.0/{project_id}/databases/{database_name} 参数说明 表1 URI 参数 参数名称 是否必选 参数类型 说明 project_id 是 String 项目编号,用于资源隔离。获取方式请参考获取项目ID。 database_name 是 String 删除的数据库名称。 表2 query 参数 参数名称 是否必选 参数类型 说明 cascade 否 Boolean 是否强制删除数据库,取值为“true”或者“false”。默认值为:false。 async 否 Boolean 是否异步方式删除数据库,取值为“true”或者“false”。默认值为:false。 带入query参数的URL示例如下: DELETE /v1.0/{project_id}/databases/{database_name}?cascade={is_cascade}&async={is_asyn}
  • 响应消息 表3 响应参数 参数名称 是否必选 参数类型 说明 is_success 否 Boolean 执行请求是否成功。“true”表示请求执行成功。 message 否 String 系统提示信息,执行成功时,信息可能为空。 database_count 否 Integer 数据库的总数。 databases 否 Array of objects 数据库信息。具体参数请参见表4。 表4 databases参数 参数名称 是否必选 参数类型 说明 database_name 否 String 数据库名称。 owner 否 String 数据库的创建者。 table_number 否 Integer 数据库中表的个数。 description 否 String 数据库相关的描述信息。 enterprise_project_id 是 String 企业项目ID,“0”表示default,即默认的企业项目。关于如何设置企业项目请参考《企业管理用户指南》。 说明: 开通了企业管理服务的用户可设置该参数绑定指定的项目。 resource_id 是 String 资源ID。
  • URI URI格式: GET /v1.0/{project_id}/databases 参数说明 表1 URI参数 参数名称 是否必选 参数类型 说明 project_id 是 String 项目编号,用于资源隔离。获取方式请参考获取项目ID。 表2 query参数 参数名称 是否必选 参数类型 说明 with-priv 否 Boolean 是否显示权限信息,取值为“true”或者“false”,默认为“false”。 offset 否 Integer 偏移量,取值需要大于等于0,默认值为0。 limit 否 Integer 返回的数据条数,取值需要大于等于0,默认返回所有数据。 keyword 否 String 数据库名过滤关键字,模糊匹配,获取数据库名含有该关键字的所有数据库。 tags 否 String 数据库标签。格式为“key=value”,例如: 单标签场景: GET /v1.0/{project_id}/databases?offset=0&limit=10&with-priv=true&tags=k1%3Dv1 其中,“=”需要转义为“%3D”,“k1”为标签键,“v1”为标签值。 多标签场景: 如果涉及到多个标签的场景,则多个标签之间需要通过“,”号分隔,“,”号需要转义为“%2C”,例如: GET /v1.0/{project_id}/databases?offset=0&limit=10&with-priv=true&tags=k1%3Dv1%2Ck2%3Dv2 其中,“=”需要转义为“%3D”,“k1”为标签键1,“v1”为标签值1,“k2”为标签键2,“v2”为标签值2。 注意:当前只支持所有tags值整体的模糊查询,不支持精确查询。 带入query参数的URL示例如下: GET /v1.0/{project_id}/databases?with-priv={is_with_priv}&offset={offsetValue}&limit={limitValue}&keyword={keywordValue}?tags={tagsValue}
  • 响应示例 { "is_success": true, "message": "", "database_count": 1, "databases": [ { "database_name": "db2", "description": "this is for test", "owner": "tenant1", "table_number": 15 } ] }
共100000条