更新时间:2026-02-05 GMT+08:00
分享

更新管道结构 - UpdatePipeSchema

功能介绍

更新管道结构

调用方法

请参见如何调用API

授权信息

账号具备所有API的调用权限,如果使用账号下的IAM用户调用当前API,该IAM用户需具备调用API所需的权限,具体权限要求请参见权限和授权项

URI

PUT /v2/{project_id}/workspaces/{workspace_id}/siem/pipes/{pipe_id}/schema

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

参数解释:

项目ID,用于明确项目归属,配置后可通过该ID查询项目下资产,可以通过调用API获取,也可以从控制台获取。获取项目ID

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

workspace_id

String

工作空间ID

pipe_id

String

管道ID

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

参数解释:

用户Token,通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。获取用户Token

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

表3 请求Body参数

参数

是否必选

参数类型

描述

columns

Array of TableColumnForIsapPipe objects

管道列

watermark_column

String

管道水线列

watermark_interval

Float

管道水线间隔时长

time_filter

String

管道过滤列

表4 TableColumnForIsapPipe

参数

是否必选

参数类型

描述

column_name

String

表列名称

column_data_type

String

参数解释:

列字段数据类型

  • ROW 行类型

  • MAP_STRING 字符串映射类型

  • MAP_DECIMAL 小数映射类型

  • TINYINT 微整型

  • SMALLINT 小整型

  • INT 整型

  • BIGINT 长整型

  • DECIMAL 精确小数类型

  • FLOAT 单精度浮点数

  • DOUBLE 双精度浮点数

  • CHAR 定长字符串

  • VARCHAR 不定长字符串

  • STRING 字符串类型

  • KEYWORD 关键字类型

  • BOOLEAN 布尔类型

  • DATE 日期类型

  • TIME 时间类型

  • TIMESTAMP 时间戳类型

  • TIMESTAMP_LTZ 本地时间戳类型

约束限制

不涉及

取值范围:

  • ROW

  • MAP_STRING

  • MAP_DECIMAL

  • TINYINT

  • SMALLINT

  • INT

  • BIGINT

  • DECIMAL

  • FLOAT

  • DOUBLE

  • CHAR

  • VARCHAR

  • STRING

  • KEYWORD

  • BOOLEAN

  • DATE

  • TIME

  • TIMESTAMP

  • TIMESTAMP_LTZ

默认值

不涉及

column_data_type_setting

String

列数据类型设置

column_type

String

参数解释:

列字段类型

  • PHYSICAL 物理字段

  • METADATA 元数据字段

  • VIRTUAL_METADATA 虚拟元数据字段

  • COMPUTED 计算字段

约束限制

不涉及

取值范围:

  • PHYSICAL

  • METADATA

  • VIRTUAL_METADATA

  • COMPUTED

默认值

不涉及

column_type_setting

String

列类型设置

default_value

String

列默认值

nullable

Boolean

列是否可为空

array

Boolean

是否为数组

depth

Long

列深度

parent_name

String

列名称

own_name

String

列名称

响应参数

状态码:200

表5 响应Body参数

参数

参数类型

描述

columns

Array of TableColumnForIsapPipe objects

管道列

watermark_column

String

管道水线列

watermark_interval

Float

管道水线间隔时长

time_filter

String

管道过滤列

表6 TableColumnForIsapPipe

参数

参数类型

描述

column_name

String

表列名称

column_data_type

String

参数解释:

列字段数据类型

  • ROW 行类型

  • MAP_STRING 字符串映射类型

  • MAP_DECIMAL 小数映射类型

  • TINYINT 微整型

  • SMALLINT 小整型

  • INT 整型

  • BIGINT 长整型

  • DECIMAL 精确小数类型

  • FLOAT 单精度浮点数

  • DOUBLE 双精度浮点数

  • CHAR 定长字符串

  • VARCHAR 不定长字符串

  • STRING 字符串类型

  • KEYWORD 关键字类型

  • BOOLEAN 布尔类型

  • DATE 日期类型

  • TIME 时间类型

  • TIMESTAMP 时间戳类型

  • TIMESTAMP_LTZ 本地时间戳类型

约束限制

不涉及

取值范围:

  • ROW

  • MAP_STRING

  • MAP_DECIMAL

  • TINYINT

  • SMALLINT

  • INT

  • BIGINT

  • DECIMAL

  • FLOAT

  • DOUBLE

  • CHAR

  • VARCHAR

  • STRING

  • KEYWORD

  • BOOLEAN

  • DATE

  • TIME

  • TIMESTAMP

  • TIMESTAMP_LTZ

默认值

不涉及

column_data_type_setting

String

列数据类型设置

column_type

String

参数解释:

列字段类型

  • PHYSICAL 物理字段

  • METADATA 元数据字段

  • VIRTUAL_METADATA 虚拟元数据字段

  • COMPUTED 计算字段

约束限制

不涉及

取值范围:

  • PHYSICAL

  • METADATA

  • VIRTUAL_METADATA

  • COMPUTED

默认值

不涉及

column_type_setting

String

列类型设置

default_value

String

列默认值

nullable

Boolean

列是否可为空

array

Boolean

是否为数组

depth

Long

列深度

parent_name

String

列名称

own_name

String

列名称

请求示例

更新管道Schema,新增字段

https://{endpoint}/v2/{project_id}/workspaces/{workspace_id}/siem/pipes/{pipe_id}/schema

{
  "columns" : [ {
    "column_name" : "ctime",
    "column_data_type" : "TIMESTAMP",
    "column_data_type_setting" : "3",
    "column_type" : "PHYSICAL",
    "column_type_setting" : "",
    "nullable" : true,
    "array" : false,
    "depth" : 0,
    "parent_name" : "",
    "own_name" : "ctime"
  }, {
    "column_name" : "age",
    "column_data_type" : "INT",
    "column_data_type_setting" : "",
    "column_type" : "PHYSICAL",
    "column_type_setting" : "",
    "nullable" : true,
    "array" : false,
    "depth" : 0,
    "parent_name" : "",
    "own_name" : "age"
  }, {
    "column_name" : "test_add",
    "column_data_type" : "BIGINT",
    "column_data_type_setting" : "",
    "column_type" : "PHYSICAL",
    "column_type_setting" : "",
    "nullable" : true,
    "array" : false,
    "depth" : 0,
    "own_name" : "test_add"
  } ],
  "watermark_column" : "ctime",
  "watermark_interval" : 5,
  "time_filter" : "ctime"
}

响应示例

状态码:200

成功

{
  "columns" : [ {
    "array" : false,
    "column_data_type" : "TIMESTAMP",
    "column_data_type_setting" : "3",
    "column_name" : "ctime",
    "column_type" : "PHYSICAL",
    "column_type_setting" : "",
    "depth" : 0,
    "nullable" : true,
    "own_name" : "ctime",
    "parent_name" : ""
  }, {
    "array" : false,
    "column_data_type" : "INT",
    "column_data_type_setting" : "",
    "column_name" : "age",
    "column_type" : "PHYSICAL",
    "column_type_setting" : "",
    "depth" : 0,
    "nullable" : true,
    "own_name" : "age",
    "parent_name" : ""
  } ],
  "time_filter" : "ctime",
  "watermark_column" : "ctime",
  "watermark_interval" : 5
}

SDK代码示例

SDK代码示例如下。

更新管道Schema,新增字段

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package com.huaweicloud.sdk.test;

import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.secmaster.v2.region.SecMasterRegion;
import com.huaweicloud.sdk.secmaster.v2.*;
import com.huaweicloud.sdk.secmaster.v2.model.*;

import java.util.List;
import java.util.ArrayList;

public class UpdatePipeSchemaSolution {

    public static void main(String[] args) {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        String ak = System.getenv("CLOUD_SDK_AK");
        String sk = System.getenv("CLOUD_SDK_SK");
        String projectId = "{project_id}";

        ICredential auth = new BasicCredentials()
                .withProjectId(projectId)
                .withAk(ak)
                .withSk(sk);

        SecMasterClient client = SecMasterClient.newBuilder()
                .withCredential(auth)
                .withRegion(SecMasterRegion.valueOf("<YOUR REGION>"))
                .build();
        UpdatePipeSchemaRequest request = new UpdatePipeSchemaRequest();
        request.withWorkspaceId("{workspace_id}");
        request.withPipeId("{pipe_id}");
        PipeSchema body = new PipeSchema();
        List<TableColumnForIsapPipe> listbodyColumns = new ArrayList<>();
        listbodyColumns.add(
            new TableColumnForIsapPipe()
                .withColumnName("ctime")
                .withColumnDataType(TableColumnForIsapPipe.ColumnDataTypeEnum.fromValue("TIMESTAMP"))
                .withColumnDataTypeSetting("3")
                .withColumnType(TableColumnForIsapPipe.ColumnTypeEnum.fromValue("PHYSICAL"))
                .withColumnTypeSetting("")
                .withNullable(true)
                .withArray(false)
                .withDepth(0L)
                .withParentName("")
                .withOwnName("ctime")
        );
        listbodyColumns.add(
            new TableColumnForIsapPipe()
                .withColumnName("age")
                .withColumnDataType(TableColumnForIsapPipe.ColumnDataTypeEnum.fromValue("INT"))
                .withColumnDataTypeSetting("")
                .withColumnType(TableColumnForIsapPipe.ColumnTypeEnum.fromValue("PHYSICAL"))
                .withColumnTypeSetting("")
                .withNullable(true)
                .withArray(false)
                .withDepth(0L)
                .withParentName("")
                .withOwnName("age")
        );
        listbodyColumns.add(
            new TableColumnForIsapPipe()
                .withColumnName("test_add")
                .withColumnDataType(TableColumnForIsapPipe.ColumnDataTypeEnum.fromValue("BIGINT"))
                .withColumnDataTypeSetting("")
                .withColumnType(TableColumnForIsapPipe.ColumnTypeEnum.fromValue("PHYSICAL"))
                .withColumnTypeSetting("")
                .withNullable(true)
                .withArray(false)
                .withDepth(0L)
                .withOwnName("test_add")
        );
        body.withTimeFilter("ctime");
        body.withWatermarkInterval(5f);
        body.withWatermarkColumn("ctime");
        body.withColumns(listbodyColumns);
        request.withBody(body);
        try {
            UpdatePipeSchemaResponse response = client.updatePipeSchema(request);
            System.out.println(response.toString());
        } catch (ConnectionException e) {
            e.printStackTrace();
        } catch (RequestTimeoutException e) {
            e.printStackTrace();
        } catch (ServiceResponseException e) {
            e.printStackTrace();
            System.out.println(e.getHttpStatusCode());
            System.out.println(e.getRequestId());
            System.out.println(e.getErrorCode());
            System.out.println(e.getErrorMsg());
        }
    }
}

更新管道Schema,新增字段

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# coding: utf-8

import os
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdksecmaster.v2.region.secmaster_region import SecMasterRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdksecmaster.v2 import *

if __name__ == "__main__":
    # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
    # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
    ak = os.environ["CLOUD_SDK_AK"]
    sk = os.environ["CLOUD_SDK_SK"]
    projectId = "{project_id}"

    credentials = BasicCredentials(ak, sk, projectId)

    client = SecMasterClient.new_builder() \
        .with_credentials(credentials) \
        .with_region(SecMasterRegion.value_of("<YOUR REGION>")) \
        .build()

    try:
        request = UpdatePipeSchemaRequest()
        request.workspace_id = "{workspace_id}"
        request.pipe_id = "{pipe_id}"
        listColumnsbody = [
            TableColumnForIsapPipe(
                column_name="ctime",
                column_data_type="TIMESTAMP",
                column_data_type_setting="3",
                column_type="PHYSICAL",
                column_type_setting="",
                nullable=True,
                array=False,
                depth=0,
                parent_name="",
                own_name="ctime"
            ),
            TableColumnForIsapPipe(
                column_name="age",
                column_data_type="INT",
                column_data_type_setting="",
                column_type="PHYSICAL",
                column_type_setting="",
                nullable=True,
                array=False,
                depth=0,
                parent_name="",
                own_name="age"
            ),
            TableColumnForIsapPipe(
                column_name="test_add",
                column_data_type="BIGINT",
                column_data_type_setting="",
                column_type="PHYSICAL",
                column_type_setting="",
                nullable=True,
                array=False,
                depth=0,
                own_name="test_add"
            )
        ]
        request.body = PipeSchema(
            time_filter="ctime",
            watermark_interval=5,
            watermark_column="ctime",
            columns=listColumnsbody
        )
        response = client.update_pipe_schema(request)
        print(response)
    except exceptions.ClientRequestException as e:
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)

更新管道Schema,新增字段

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
package main

import (
	"fmt"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
    secmaster "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/secmaster/v2"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/secmaster/v2/model"
    region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/secmaster/v2/region"
)

func main() {
    // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
    // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
    ak := os.Getenv("CLOUD_SDK_AK")
    sk := os.Getenv("CLOUD_SDK_SK")
    projectId := "{project_id}"

    auth := basic.NewCredentialsBuilder().
        WithAk(ak).
        WithSk(sk).
        WithProjectId(projectId).
        Build()

    client := secmaster.NewSecMasterClient(
        secmaster.SecMasterClientBuilder().
            WithRegion(region.ValueOf("<YOUR REGION>")).
            WithCredential(auth).
            Build())

    request := &model.UpdatePipeSchemaRequest{}
	request.WorkspaceId = "{workspace_id}"
	request.PipeId = "{pipe_id}"
	columnDataTypeSettingColumns:= "3"
	columnTypeColumns:= model.GetTableColumnForIsapPipeColumnTypeEnum().PHYSICAL
	columnTypeSettingColumns:= ""
	nullableColumns:= true
	arrayColumns:= false
	depthColumns:= int64(0)
	parentNameColumns:= ""
	ownNameColumns:= "ctime"
	columnDataTypeSettingColumns1:= ""
	columnTypeColumns1:= model.GetTableColumnForIsapPipeColumnTypeEnum().PHYSICAL
	columnTypeSettingColumns1:= ""
	nullableColumns1:= true
	arrayColumns1:= false
	depthColumns1:= int64(0)
	parentNameColumns1:= ""
	ownNameColumns1:= "age"
	columnDataTypeSettingColumns2:= ""
	columnTypeColumns2:= model.GetTableColumnForIsapPipeColumnTypeEnum().PHYSICAL
	columnTypeSettingColumns2:= ""
	nullableColumns2:= true
	arrayColumns2:= false
	depthColumns2:= int64(0)
	ownNameColumns2:= "test_add"
	var listColumnsbody = []model.TableColumnForIsapPipe{
        {
            ColumnName: "ctime",
            ColumnDataType: model.GetTableColumnForIsapPipeColumnDataTypeEnum().TIMESTAMP,
            ColumnDataTypeSetting: &columnDataTypeSettingColumns,
            ColumnType: &columnTypeColumns,
            ColumnTypeSetting: &columnTypeSettingColumns,
            Nullable: &nullableColumns,
            Array: &arrayColumns,
            Depth: &depthColumns,
            ParentName: &parentNameColumns,
            OwnName: &ownNameColumns,
        },
        {
            ColumnName: "age",
            ColumnDataType: model.GetTableColumnForIsapPipeColumnDataTypeEnum().INT,
            ColumnDataTypeSetting: &columnDataTypeSettingColumns1,
            ColumnType: &columnTypeColumns1,
            ColumnTypeSetting: &columnTypeSettingColumns1,
            Nullable: &nullableColumns1,
            Array: &arrayColumns1,
            Depth: &depthColumns1,
            ParentName: &parentNameColumns1,
            OwnName: &ownNameColumns1,
        },
        {
            ColumnName: "test_add",
            ColumnDataType: model.GetTableColumnForIsapPipeColumnDataTypeEnum().BIGINT,
            ColumnDataTypeSetting: &columnDataTypeSettingColumns2,
            ColumnType: &columnTypeColumns2,
            ColumnTypeSetting: &columnTypeSettingColumns2,
            Nullable: &nullableColumns2,
            Array: &arrayColumns2,
            Depth: &depthColumns2,
            OwnName: &ownNameColumns2,
        },
    }
	watermarkIntervalPipeSchema:= float32(5)
	watermarkColumnPipeSchema:= "ctime"
	request.Body = &model.PipeSchema{
		TimeFilter: "ctime",
		WatermarkInterval: &watermarkIntervalPipeSchema,
		WatermarkColumn: &watermarkColumnPipeSchema,
		Columns: listColumnsbody,
	}
	response, err := client.UpdatePipeSchema(request)
	if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
}

更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。

状态码

状态码

描述

200

成功

错误码

请参见错误码

相关文档