name: infer-schema description: 从数据文件推断Starlake模式
模式推断技能
分析数据文件(CSV、JSON、XML、Parquet)并推断Starlake表模式,生成检测到的列名、类型和格式元数据的对应YAML配置文件。
使用方法
starlake infer-schema [选项]
选项
--input <value>:要分析的数据文件或目录的路径(必需)--domain <value>:生成模式的域名(例如starbake)--table <value>:生成模式的表名(例如orders)--outputDir <value>:YAML文件的输出目录(默认:metadata/load)--write <value>:写入模式:OVERWRITE或APPEND--format <value>:强制输入文件格式:DSV、JSON、JSON_FLAT、JSON_ARRAY、XML、PARQUET--rowTag <value>:XML文件的行标签(例如record)--variant:推断模式为单一变体属性(schema-on-read)--clean:在写入前删除之前的YAML文件--encoding <value>:输入文件编码(默认:UTF-8)--from-json-schema:输入文件是JSON模式文件(不是数据)--reportFormat <value>:报告输出格式:console、json或html
生成输出
该命令生成一个表YAML文件,例如:
# 生成: metadata/load/starbake/orders.sl.yml
version: 1
table:
name: "orders"
pattern: "orders_.*.json"
attributes:
- name: "customer_id"
type: "long"
sample: "9"
- name: "order_id"
type: "long"
sample: "99"
- name: "status"
type: "string"
sample: "Pending"
- name: "timestamp"
type: "iso_date_time"
sample: "2024-03-01T09:01:12.529Z"
metadata:
format: "JSON_FLAT"
encoding: "UTF-8"
array: true
writeStrategy:
type: "APPEND"
示例
从CSV文件推断
starlake infer-schema --domain starbake --table order_lines --input /data/order-lines_20240301.csv --format DSV
从JSON文件推断
starlake infer-schema --domain starbake --table orders --input /data/orders_20240301.json
从XML文件推断
starlake infer-schema --domain starbake --table products --input /data/products.xml --rowTag record
从Parquet文件推断
starlake infer-schema --domain starbake --table events --input /data/events.parquet
从JSON模式推断
starlake infer-schema --domain starbake --table orders --input /schemas/orders.json --from-json-schema
覆盖现有模式
starlake infer-schema --domain starbake --table orders --input /data/orders.json --clean
推断为变体(读取时模式)
starlake infer-schema --domain starbake --table events --input /data/events.json --variant
相关技能
- autoload - 一步推断模式和加载
- load - 使用推断模式加载数据
- xls2yml - 从Excel定义生成模式
- extract-schema - 从数据库提取模式