导出或生成 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 开始
- 使用版本控制来差异架构更改
- 对于关键集合,请使用不同的参数运行多个传递