更新元数据实体,支持更新创建的自定义类型对象或者扩展表对象(Database/Table/Column)
接口说明
需要购买 DataWorks 专业版及以上版本才能使用。
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
调试
授权信息
请求语法
POST HTTP/1.1
请求参数
|
名称 |
类型 |
必填 |
描述 |
示例值 |
| Id |
string |
是 |
待更新实体 ID;实体名称、实体类型、父子关系由 ID 决定,不支持通过本接口修改 |
custom_entity-customer_api:api_001 |
| Comment |
string |
否 |
注释 |
this is a comment |
| Attributes |
object |
否 |
实体属性,复杂值需要序列化为 JSON 字符串 |
[] |
|
string |
否 |
实体属性值 |
value |
|
| CustomAttributes |
object |
否 |
自定义属性值,key 为自定义属性标识,value 最多一个值;空列表表示删除该属性值 |
[] |
|
array |
否 |
自定义属性值的数组,当前仅支持单值数组 |
||
|
string |
否 |
自定义属性值 |
张三 |
纯自定义实体
EntityType 使用 custom_entity-<name>。可更新内容如下:
| 字段 | 支持情况 | 说明 |
Comment | 支持 | 更新实体注释 |
Attributes | 支持 | key 必须存在于对应 MetaEntityDef.AttributeDefs;未知 key 报错 |
CustomAttributes | 支持 | key 必须是适用于该实体类型的自定义属性定义 |
Attributes 规则
| 项目 | 说明 |
| 更新语义 | patch 语义;只传入的 key 会被更新,其它已有属性保留 |
| 删除属性 | 传入某个属性 key 且 value 为 null 时,会从实体 attributes 中删除该 key |
| 必填属性 | 如果删除或清空的是必填属性,会按合并后的结果校验并报错 |
| ENUM 属性 | value 必须在 AttributeDef.AllowedValues 中 |
| DATE 属性 | value 必须是毫秒时间戳 |
| ARRAY/JSON 属性 | 由于 OpenAPI 入参是字符串,通常需要传 JSON 字符串 |
示例:
{
"Comment": "更新后的自定义实体",
"Attributes": {
"level": "L2",
"profile": "{\"owner\":\"data_team\"}"
},
"CustomAttributes": {
"biz_owner": ["data_team"]
}
}
扩展表类型的 Database 对象
适用于 custom_<name>-database。
| Attributes key | 是否支持 | 类型/写法 | 说明 |
technicalMetadata.location | 是 | String | 更新 database 的存储位置,对应 ES 字段 location |
parentMetaEntityId | 否 | - | 父子关系不可更新,传入会报错 |
| 其它 key | 否 | - | 共享实体更新白名单外的 key 会报错 |
扩展表类型 Table 对象
适用于 custom_<name>-table。
| Attributes key | 是否支持 | 类型/写法 | 说明 |
tableType | 是 | String | 更新表类型; |
partitionKeys | 是 | JSON Array 字符串或 String | 传数组时会用逗号拼接后写入,例如 ["dt","hh"] 写成 dt,hh |
technicalMetadata.owner | 是 | String | 更新 owner |
technicalMetadata.location | 是 | String | 更新存储位置 |
technicalMetadata.compressed | 是 | Boolean | 支持 true、false |
technicalMetadata.inputFormat | 是 | String | 更新 InputFormat |
technicalMetadata.outputFormat | 是 | String | 更新 OutputFormat |
technicalMetadata.serializationLibrary | 是 | String | 更新 SerDe 类 |
technicalMetadata.parameters | 是 | JSON Object 字符串或 String | 传 JSON Object 时会序列化为字符串写入 parameters |
parentMetaEntityId | 否 | - | 父 database 不可更新,传入会报错 |
columns | 否 | - | 不能通过 UpdateMetaEntity 改字段列表;需要更新 column 实体本身 |
| 其它 key | 否 | - | 共享实体更新白名单外的 key 会报错 |
示例:
{
"Comment": "更新后的表说明",
"Attributes": {
"tableType": "VIEW",
"partitionKeys": "[\"dt\"]",
"technicalMetadata.location": "oss://bucket/ods/order_fact",
"technicalMetadata.compressed": "true",
"technicalMetadata.parameters": "{\"retention\":\"30\"}"
},
"CustomAttributes": {
"biz_owner": ["data_team"]
}
}
扩展表类型的 Column 对象
适用于 custom_<name>-column。
| Attributes key | 是否支持 | 类型/写法 | 说明 |
type | 是 | String | 更新字段类型 |
position | 是 | Integer | 更新字段位置 |
partitionKey | 是 | Boolean | 更新是否分区字段,对应 ES 字段 isPartitionKey |
primaryKey | 是 | Boolean | 更新是否主键,对应 ES 字段 isPrimaryKey |
foreignKey | 是 | Boolean | 更新是否外键,对应 ES 字段 isForeignKey |
parentMetaEntityId | 否 | - | 父 table 不可更新,传入会报错 |
| 其它 key | 否 | - | 共享实体更新白名单外的 key 会报错 |
如果父表不存在、父表不属于当前租户,或者父表没有 inline columns,会报错。
示例:
{
"Comment": "订单 ID",
"Attributes": {
"type": "BIGINT",
"position": "1",
"primaryKey": "true"
},
"CustomAttributes": {
"security_level": ["P1"]
}
}
不支持或容易误用的点
| 项目 | 结论 |
| 修改实体名称 | 不支持;名称来自 Id |
| 修改 EntityType | 不支持;类型来自 Id |
| 修改父实体 | 不支持;attributes.parentMetaEntityId 会报错 |
| 修改字段列表 | 不支持;attributes.columns 会报错 |
| 创建新字段 | 不支持;扩展 table 的字段需要在创建 table 时通过 BatchCreateMetaEntities 的 Attributes.columns 提供 |
返回参数
|
名称 |
类型 |
描述 |
示例值 |
|
object |
Schema of Response |
||
| RequestId |
string |
Id of the request |
AASFDFSDFG-DFSDF-DFSDFD-SDFSDF |
| Success |
boolean |
请求是否成功 |
true |
| Result |
object |
更新后的实体或写入结果 |
|
| Id |
string |
实体 ID |
custom_entity-customer_api:api_001 |
| Success |
boolean |
是否成功 |
true |
示例
正常返回示例
JSON格式
{
"RequestId": "AASFDFSDFG-DFSDF-DFSDFD-SDFSDF",
"Success": true,
"Result": {
"Id": "custom_entity-customer_api:api_001",
"Success": true
}
}
错误码
访问错误中心查看更多错误码。
变更历史
更多信息,参考变更详情。