导出或生成 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 | 
其中一个: TopNExtractor、 EligibleDataSamplerTimePartitionedSampler | 
-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
配置文件路径。 如果省略:
- 
              
dab-config.<DAB_ENVIRONMENT>.json如果设置了 env var - 否则 
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 开始
 - 使用版本控制来差异架构更改
 - 对于关键集合,请使用不同的参数运行多个传递