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 配置文件的路径
--help 显示帮助屏幕
--version 显示版本信息

行为

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

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

采样模式

TopNExtractor

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

用于较小的统一数据集

EligibleDataSampler

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

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

TimePartitionedSampler

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

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

注释

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

--graphql

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

Example

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

-o, --output

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

Example

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

-g, --graphql-schema-file

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

Example

dab export \
  --graphql \
  -o ./out \
  -g custom-schema.gql

--generate

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

Example

dab export \
  --graphql \
  -o ./schema-gen \
  --generate

-m, --sampling-mode

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

Example

dab export \
  --graphql \
  -o ./schema-gen \
  --generate \
  --sampling-mode TopNExtractor

-n, --sampling-count

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

Example

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

--sampling-partition-key-path

EligibleDataSampler 的分区键路径

Example

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

-d, --sampling-days

按休会筛选文档(天)

Example

dab export \
  --graphql \
  -o ./schema-gen \
  --generate \
  --sampling-days 14

--sampling-group-count

TimePartitionedSampler 的时间组数

Example

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

-c, --config

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

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

Example

dab export \
  --graphql \
  -o ./schema-out \
  --config ./dab-config.json

--help

显示帮助屏幕。

Example

dab export --help

--version

显示版本信息。

Example

dab export --version

返回代码

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

生成的文件使用情况

设置为 runtime.graphql.schema 导出的架构文件路径。 有关详细信息,请参阅 运行时配置

小窍门

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

Troubleshooting

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

最佳做法

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