export 命令

导出或生成 GraphQL 架构文件并将其保存到磁盘。 支持两种模式:

  • 从临时 DAB 运行时实例中提取现有架构
  • 使用采样从 Cosmos DB 为 NoSQL 数据生成架构

Syntax

dab export --graphql -o <output-directory> [options]

重要

需要有效的 DAB 配置。从配置文件中读取数据库类型。 不接受 --database-type 任何标志。

快速浏览

选项 必选 违约 应用
--graphql 是的 必须为架构导出设置
-o, --output <dir> 是的 输出架构的目录
-g, --graphql-schema-file <name> schema.gql 放置在输出 dir 中的文件名
--generate 从 Cosmos DB 数据生成架构
-m, --sampling-mode <mode> TopNExtractor 其中一个: TopNExtractorEligibleDataSamplerTimePartitionedSampler
-n, --sampling-count <int> 依赖于模式 每个模式的记录数
--sampling-partition-key-path <path> 仅限EligibleDataSampler
-d, --sampling-days <int> 限制为大于 N 天的记录
--sampling-group-count <int> 仅限TimePartitionedSampler
-c, --config <file> 特定于 Env 或 dab-config.json 配置文件的路径

行为

模式 Description
导出现有架构 启动临时运行时(内省 GraphQL 架构)写入文件
生成架构 示例 Cosmos DB 文档和推断架构

空架构导致错误:“生成的 GraphQL 架构为空。 请确保数据可用于生成架构。

采样模式

TopNExtractor

  • 示例 N 个最近使用的文档
  • 可选时间筛选器 --sampling-days

用于较小的统一数据集

EligibleDataSampler

  • 分区感知采样
  • 每个分区的 N 个文档
  • --sampling-partition-key-path(可选)

当分区具有不同架构时使用

TimePartitionedSampler

  • 将最小值/最大值 _ts 拆分为时间组
  • 每个组的 N 个文档
  • --sampling-group-count 必填

架构随时间推移而演变时使用

注释

由于多个查询,资源密集型更多。

选项

--graphql

启用架构导出。 没有它,什么也没发生。

-o, --output

架构文件的目录。 如果缺少,则创建。

-g, --graphql-schema-file

仅输出文件名,默认为 schema.gql.

--generate

  • false (默认值):启动运行时,内省架构
  • true:从 Cosmos DB 数据生成架构

-m, --sampling-mode

选项:TopNExtractor、、 TimePartitionedSamplerEligibleDataSampler默认值:TopNExtractor

-n, --sampling-count

  • TopNExtractor:文档总数
  • EligibleDataSampler:每个分区
  • TimePartitionedSampler:每个时间组

--sampling-partition-key-path

EligibleDataSampler 的分区键路径

-d, --sampling-days

按休会筛选文档(天)

--sampling-group-count

TimePartitionedSampler 的时间组数

-c, --config

配置文件路径。 如果省略:

  1. dab-config.<DAB_ENVIRONMENT>.json 如果设置了 env var
  2. 否则 dab-config.json

返回代码

Code Meaning
0 导出成功
非零 导出失败

例子

导出现有架构

dab export --graphql -o ./schema-out

生成架构 (TopNExtractor)

dab export --graphql -o ./schema-gen \
  --generate \
  --sampling-mode TopNExtractor \
  --sampling-count 25 \
  --sampling-days 14

分区感知采样

dab export --graphql -o ./schema-partitions \
  --generate \
  --sampling-mode EligibleDataSampler \
  --sampling-partition-key-path /customerId \
  --sampling-count 10

基于时间的采样

dab export --graphql -o ./schema-time \
  --generate \
  --sampling-mode TimePartitionedSampler \
  --sampling-group-count 8 \
  --sampling-count 5 \
  --sampling-days 60

自定义输出文件名

dab export --graphql -o ./out \
  -g cosmos-schema.graphql \
  --generate \
  --sampling-mode TopNExtractor \
  --sampling-count 15

生成的文件使用情况

更新配置:

{
  "data-source": {
    "database-type": "cosmosdb_nosql"
  },
  "runtime": {
    "graphql": {
      "enabled": true,
      "schema-file": "schema.gql"
    }
  }
}

小窍门

稳定后提交生成的架构。 如果数据模型发生更改,请重新运行。

Troubleshooting

症状 原因 修复
空架构 无数据或不足 添加代表性数据
连接错误 连接字符串错误 修复凭据或网络
缺少字段 不在采样文档中 增加计数或更改模式
很少有分区结果 分区键错误 提供正确的密钥路径
慢速采样 大型数据集 减少组或天数

最佳做法

  • 从 TopNExtractor 开始
  • 使用版本控制来差异架构更改
  • 对于关键集合,请使用不同的参数运行多个传递