主要内容

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

detectImportOptions

根据事件流内容创建导入选项

自 R2022b 起

    此函数需要 Streaming Data Framework for MATLAB® Production Server™

    说明

    opts = detectImportOptions(stream) 从事件流中获取事件模式,并基于该模式返回 ImportOptions 对象 opts 中的数据导入选项。该模式包括事件主体中变量的名称和数据类型。

    您可以稍后修改 opts 并将其与 readtimetable 一起使用来控制 MATLAB 如何将流事件导入 MATLAB 时间表。

    示例

    opts = detectImportOptions(stream,Event=e) 分析事件结构体数组 e 以确定事件模式。仅当 stream 连接的事件流不可用时才使用此语法。您可以手动创建这个数组(它可能很复杂),也可以使用先前从流中获取的数组,例如从对 readevents 函数的调用。

    示例

    全部折叠

    假设您有一个在网络地址 kafka.host.com:9092 上运行的 Kafka® 服务器,该服务器有一个主题 Triangles。每个事件都有一个数据列 "triangle",其中包含一个具有三个字段的结构体,"x""y""z",包含三角形的整数边长。

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

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

    从 Kafka 流对象创建一个 ImportOptions 对象。每条边的长度的数据类型为 string

    opts = detectImportOptions(ks)
    opts = 
    
      ImportOptions with properties:
    
                VariableNames: ["triangle/x"    "triangle/y"    "triangle/z"]
                VariableTypes: ["string"    "string"    "string"]
                  KeyVariable: "key"
        SelectedVariableNames: ["triangle/x"    "triangle/y"    "triangle/z"]
    

    要对导入的数据执行数学运算,请将变量的数据类型更新为 double。由于边长变量嵌套在 "triangle" 中,因此使用正斜杠 ("/") 指定这些变量的路径。

    opts = setvartype(opts, ["triangle/x", "triangle/y", "triangle/z"], "double")
    opts = 
    
      ImportOptions with properties:
    
                VariableNames: ["triangle/x"    "triangle/y"    "triangle/z"]
                VariableTypes: ["double"    "double"    "double"]
                  KeyVariable: "key"
        SelectedVariableNames: ["triangle/x"    "triangle/y"    "triangle/z"]
    

    更新 KafkaStream 对象的 ImportOptions 属性。

    ks.ImportOptions = opts
    ks = 
    
      KafkaStream with properties:
    
                      Topic: "Triangles"
                      Group: "85c42e39-695d-467a-86f0-f0095792e7de"
                      Order: EventTime
                       Host: "kafka.host.com"
                       Port: 9092
          ConnectionTimeout: 30
             RequestTimeout: 61
              ImportOptions: "Import to MATLAB types"
              ExportOptions: "Source: function eventSchema"
              PublishSchema: "true"
                 WindowSize: 50
                KeyVariable: "key"
                KeyEncoding: "utf16"
                    KeyType: "text"
               KeyByteOrder: "BigEndian"
               BodyEncoding: "utf8"
                 BodyFormat: "JSON"
                  ReadLimit: "Size"
        TimestampResolution: "Milliseconds"
    

    导入三角形时,readtimetable 将边长转换为 double 值。

    tt = readtimetable(ks);
    tt(1,:).triangle
    ans = 
    
      struct with fields:
    
        x: 3
        y: 4
        z: 5

    输入参数

    全部折叠

    连接到事件流的对象,指定为 KafkaStreamTestStream 对象。

    事件信息,指定为结构体数组。该数组采用 readevents 函数返回的格式。

    数组中的每个结构体都有这些字段。

    事件键存储在 Kafka 中,以字符串数组或整数形式返回。该键标识了事件来源。

    数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | string

    事件值,指定为字节数组,其格式和编码由流对象的 BodyFormatBodyEncoding 属性决定。事件值不经过模式处理,并且与存储在 Kafka 中的值完全一样,例如,以 JSON 字符串的形式出现。

    数据类型: string | uint8 | uint16

    Kafka 中的事件发生的时间戳或事件提取的时间戳,指定为日期时间标量。

    数据类型: datetime

    输出参量

    全部折叠

    事件流导入选项,作为 ImportOptions 对象返回。

    版本历史记录

    在 R2022b 中推出