Skip to content

ClickHouse设置

一些核心功能可能受到限制。如果您对贡献感兴趣,请查看下面列出的每个存储库的源代码。 Some core functionality may be limited. If you're interested in contributing, check out the source code for each repository listed below.

dbt-clickhouse 概述

  • Maintained by: 社区贡献
  • Authors: Geoff Genz
  • GitHub repo: ClickHouse/dbt-clickhouse
  • PyPI package: dbt-clickhouse
  • Slack channel: #db-clickhouse
  • Supported dbt Core version: v0.19.0及以后
  • dbt Cloud support: 不支持
  • Minimum data platform version: 未知

安装 dbt-clickhouse

pip安装是最简便的方式:

pip install dbt-clickhouse

安装 dbt-clickhouse 同样会安装 dbt-core 以及其它依赖.

配置 dbt-clickhouse

Clickhouse专项配置请参阅 clickhouse-configss配置

若要查看将来的计划,请参考 GitHub仓库: ClickHouse/dbt-clickhouse

使用 dbt-clickhouse 连接ClickHouse

从Dbt连接ClickHouse,你需要在profiles.yml文件里添加一个profile . 一个ClickHouse profile要符合以下语法:

<profile-name>:
  target: <target-name>
  outputs:
    <target-name>:
      type: clickhouse
      schema: <database-name>
      user: <username>
      password: <password>
      #optional fields
      driver: http|native
      port: <port>
      host: <hostname>
      retries: 1
      verify: False
      secure: True
      connect_timeout: 10
      send_receive_timeout: 300
      sync_request_timeout: 5
      compression: False
      compress_block_size: 1048576
      database_engine: <db_engine>
      check_exchange: True
      use_lw_deletes: False
      custom_settings: <empty>

ClickHouse Profile 字段详细说明

Field Description
type 这必须包含在profiles.ymldbt_project.yml文件中。值必须设置为clickhouse
schema 必须项。ClickHouse的数据库名称。dbt模型database.schema.table与ClickHouse不兼容,因为ClickHouse不支持schema。因此,我们使用了一个简单的模型schema.table,其中schema是ClickHouse的数据库。我们不建议使用default数据库。
user 必须项。一个ClickHouse用户名需要有足够权限访问指定的schema.
password 必须项. 与指定user关联的密码.
driver 可选项. ClickHouse客户端接口,httpnative,默认是http,除非端口设置成9440.
port 可选项. ClickHouse服务端口. http接口默认是8123/8443 (加密) ,native接口是9000/9440(加密).
host 可选项. 连接主机名. 默认是localhost.
retries 可选项. 如果错误可以恢复,则尝试重新连接的次数
verify 可选项. 针对(secure=True) 连接, 验证ClickHouse服务器TLS证书,包括匹配的主机名、过期时间以及由受信任的证书颁发机构签名。默认为True.
secure 可选项. 连接(http或native)是否由TLS保护。这将http驱动程序连接转换为https,并将本机驱动程序连接通过TLS转换为本机ClickHouse协议。默认值为False。
cluster_mode 可选项. 添加连接设置以提高与使用复制数据库引擎的群集的兼容性。默认值为False.
connect_timeout 可选项. 连接超时(秒)。默认值为10秒.
send_receive_timeout 可选项. 从ClickHouse接收数据或向ClickHouse发送数据超时时间。默认为5分钟(300秒)
sync_request_timeout 可选项. 连接ping请求超时(仅限native连接)。默认为5秒.
compression 可选项. 在连接中使用压缩。默认为False。如果将HTTP设置为True,则会启用gzip压缩。如果将native协议设置为True,则会启用lz4压缩。其他有效值为lz4hczstd,仅用于native驱动程序
compress_block_size 可选项. 使用native驱动程序进行压缩时的压缩块大小(以字节为单位)。默认为1MB
database_engine 可选项. 创建新的ClickHouse schema(数据库)时要使用的数据库引擎。如果未设置(默认值),新数据库将使用默认的ClickHouse数据库引擎(通常为Atomic)
check_exchange 可选项. 在连接到ClickHouse时,如果此参数为True,则DBT将验证ClickHouse服务器是否支持表的原子交换。使用原子交换(如果可用)可以提高可靠性和并行性。在最新的Linux操作系统上运行的ClickHouse不需要进行此检查,在这种情况下,可以通过将check_exchange设置为False来禁用此检查,以避免启动时的额外开销。默认为True
use_lw_deletes 可选项. 如果ClickHouse实验性的轻量级删除可用,则使用delete+insert策略作为增量物化(incremental materialization)的默认策略。默认为False(使用旧策略)。
.
custom_settings 可选项. 用于连接的ClickHouse特定用户设置的映射。有关支持的设置,请参阅ClickHouse文档

连接故障排除

如果从dbt连接到ClickHouse时遇到问题,请确保满足以下条件: - 该引擎必须是支持的引擎之一 - 您必须具有足够的权限才能访问数据库 - 如果没有为数据库使用默认的表引擎,则必须在模型配置中指定一个表引擎。