主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

ExportOptions

事件流的导出选项

自 R2022b 起

    此对象需要 Streaming Data Framework for MATLAB® Production Server™

    说明

    ExportOptions 对象指定 MATLAB 如何将数据从时间表导出到外部事件流,例如 Kafka® 流。该对象包含控制数据导出过程的属性,包括将事件数据转换为指定类型。

    创建对象

    使用 detectExportOptions 函数创建一个 ExportOptions 对象。该函数根据 stream 指定的事件流的配置和 row 指定的时间表行中的变量来检测并填充导出规则。

    opts = detectExportOptions(stream,row)

    创建 opts 后,使用 setvartype 来更改变量的类型,因为它们是从 MATLAB 导出到流的。要导出流数据,请使用 writetimetable 函数。

    属性

    全部展开

    模式的范围,指定为以下选项之一:

    • "None" - 架构没有范围。

    • "Event" - 架构适用于单个事件。

    • "Window" - 架构适用于窗口中的所有事件。

    • "Stream" - 模式适用于流中的所有窗口。

    使用 Scope 来优化刷新模式的频率。

    数据类型: string | char

    描述导出到事件流的 MATLAB 变量的模式,指定为以下值之一:

    • JSON 格式的文本(字符串或字符向量)

    • 计算结果为 JSON 格式文本的函数句柄

    • 生成 JSON 格式文本的 Schema 对象

    该模式定义了将变量转换为适当数据类型的规则。

    示例: '[{"name":"N","type":"int64","size":[1,1],"missingValue":0,"categorical":false},{"name":"X","type":"double","size":[1,1],"missingValue":"","categorical":false}]' 描述了一个具有两个变量的模式:N (int64) 和 X (double)。

    数据类型: char | string | function_handle

    架构的位置,指定为以下选项之一:

    • "Event" - 模式嵌入在单个事件中。

    • "Window" - 架构嵌入在事件窗口中。

    数据类型: char | string

    模式的文本表示的结构,指定为以下选项之一:

    • "Event" - 本机、默认偶数流格式

    • "InfluxDB" - InfluxDB 专门使用的格式

    数据类型: char | string

    存储在 OutputLocation 中的模式内容,指定为以下选项之一:

    • "None" - 未指定架构

    • "Literal" - 文字模式(struct 或 JSON 文本)

    • "GeneratorFunction" - 生成架构的函数句柄

    • "RegistryID" - 标识架构的字符串

    数据类型: char | string

    对象函数

    setvartype设置用于将变量导入和导出到流的数据类型

    示例

    全部折叠

    假设您有一个在网络地址 kafka.host.com:9092 上运行的 Kafka 服务器,该服务器包含主题 TrianglesnumericTriangles

    创建一个连接到 Triangles 主题的 KafkaStream 对象。

    inKS = kafkaStream("kafka.host.com",9092,"Triangles");

    Triangles 主题中的事件读入时间表。通过查看第一行来预览数据。abc 三角形边长存储为字符串。

    tt = readtimetable(inKS);
    row = tt(1,:)
    row =
    
      1×3 timetable
    
         timestamp      a       b       c  
        ___________    ____    ____    ____
    
        03-Sep-2022    "15"    "31"    "36"

    使用 detectExportOptions 从 Kafka 流对象生成 ExportOptions 对象。该函数获取用于从时间表第一行导出变量的类型。

    opts = detectExportOptions(inKS,row);

    使用 getvartype 确认边长变量当前以字符串的形式导出到流中。

    type = getvartype(opts,["a" "b" "c"]);
    
    type = 
    
      1×3 string array
    
        "string"    "string"    "string"

    更新导出选项,以便将边长导出为 double 值。使用 getvartype 确认更新的选项。

    opts = setvartype(opts,["a","b","c"],"double");
    
    [name,type] = getvartype(opts);
    fprintf("%s: %s\n", [name; type])
    a: double
    b: double
    c: double

    连接到流以将数据导出到 numericTriangles

    outKS = kafkaStream("kafka.host.com",9092,"numericTriangles", ...
        ExportOptions=opts)
    
    outKS = 
    
      KafkaStream with properties:
    
                      Topic: "numericTriangles"
                      Group: "85c42e39-695d-467a-86f0-f0095792e7de"
                      Order: EventTime
                       Host: "kafka.host.com"
                       Port: 9092
          ConnectionTimeout: 30
             RequestTimeout: 61
              ImportOptions: "None"
              ExportOptions: "Source: string"
              PublishSchema: "true"
                 WindowSize: 50
                KeyVariable: "key"
                KeyEncoding: "utf16"
                    KeyType: "text"
               KeyByteOrder: "BigEndian"
               BodyEncoding: "utf8"
                 BodyFormat: "JSON"
                  ReadLimit: "Size"
        TimestampResolution: "Milliseconds"
    

    将时间表导出至新流。此流中的三角形边长为 double 类型。

    writetimetable(outKS,tt);
    

    版本历史记录

    在 R2022b 中推出