Skip to content

与dbt集成

概述

OraAI 专为与 dbt(数据构建工具)项目深度集成而设计,能够轻松将现有数据模型转化为语义模型,大幅减少重复工作。这种集成打造了一个高效的工作流,充分发挥 dbt 的数据转换优势与 OraAI 的 AI 智能分析能力,实现双向增强。

集成工作原理

OraAI CLI提供与dbt的原生集成,通过以下关键机制工作:

1. 项目发现

当您在包含dbt项目的目录中运行orai-cli init时:

  • OraAI自动检测dbt_project.yml的存在
  • 它使用dbt项目名称作为默认数据源名称
  • 它根据您的dbt项目配置识别模型路径
  • 它使用dbt配置文件中的设置配置数据库连接
  • 它可以选择性地从您的dbt目录生成初始语义模型
# 自动检测dbt项目设置并可选择性地生成语义模型
orai-cli init

2. 目录利用

orai-cli initorai-cli generate都使用dbt的catalog.json作为数据模型的真实来源:

  • 它们会查找由dbt docs generate生成的现有catalog.json文件
  • 如果没有目录存在,它们可以为您触发目录生成
  • 目录提供关于您的模型、列和文档的全面元数据
# 从dbt目录生成语义模型
orai-cli generate

3. 语义模型生成

当将dbt模型转换为OraAI语义模型时:

  • 每个dbt模型在OraAI中成为一个语义模型
  • 列类型被智能地映射为维度或度量:
    • 数字列成为具有适当聚合的度量
    • 文本、日期、布尔列成为维度
  • dbt中的描述在语义层中得到保留
  • 在可能的情况下推断主键和关系

设置过程

要使用现有dbt项目设置OraAI项目:

  1. 导航到您的dbt项目目录
cd your-dbt-project
  1. 初始化您的OraAI项目
orai-cli init

CLI将:

  • 自动检测您的dbt项目
  • 建议适当的设置
  • 可选择性地从您的dbt目录生成初始语义模型
  1. 生成或更新语义模型
orai-cli generate

此命令:

  • 可以随时运行以更新语义模型
  • 在添加新模型或列时很有用
  • 保留现有的自定义设置,同时添加新元素
  • 如果dbt目录不存在,将生成dbt目录

目录结构集成

OraAI在如何与您的dbt目录结构集成方面很灵活:

your-dbt-project/
├── dbt_project.yml
├── models/
│   ├── marts/
│   │   └── core/
│   │       ├── orders.sql
│   │       └── orders.yml  # dbt YAML
│   └── staging/
│       └── ...
├── orai.yml              # 由orai init创建
└── semantic_models/        # 由orai generate创建
    ├── marts/
    │   └── core/
    │       └── orders.yml  # OraAI语义模型
    └── staging/
        └── ...

您可以选择:

  • 在SQL文件旁生成语义模型
  • 为语义模型使用单独的目录
  • 自定义路径以适应您的项目结构

更新模型

当您的dbt模型发生变化时:

  1. 生成更新的语义模型
shell
$ orai-cli generate

这会在添加新列或模型的同时保留您的自定义增强。

  1. 部署您更新的模型
shell
$ orai-cli deploy
🚀 开始部署语义模型...
......
 所有模型已成功部署!

调试dbt集成

如果您在dbt集成方面遇到问题:

  • 如果dbt docs generate不工作,请先尝试运行dbt clean以确保您的dbt目录是最新的
  • 检查您的dbt profiles.yml是否有有效的数据库凭据
  • 检查dbt和OraAI配置中的架构和数据库设置