【发布时间】:2022-12-22 06:39:45
【问题描述】:
我在通过 dbt-clickhouse (+ dbt 1.3) 实现增量实现方面有些挣扎。我的模型看起来像这样(我尽可能地简化了):
{{
config(
materialized='incremental',
engine='MergeTree()',
order_by=['ts'],
unique_key=['impid']
)
}}
select ts, impid from gam.data
{% if is_incremental() %}
where ts >= now() - toIntervalHour(1)
{% endif %}
我在运行 dbt run 时收到的错误是:
10:16:18 :HTTPDriver for http://localhost:8123 returned response code 400)
10:16:18 Code: 62. DB::Exception: Syntax error: failed at position 312 ('empty') (line 15, col 9): empty
10:16:18 as (
10:16:18
10:16:18 select ts, impid from gam.data
10:16:18
10:16:18 )
10:16:18 . Expected one of: token, Arrow, DoubleColon, MOD, DIV, NOT, BETWEEN, LIKE, ILIK
10:16:18
10:16:18 Done. PASS=6 WARN=0 ERROR=1 SKIP=0 TOTAL=7
有趣的是,完全相同的模型适用于基本视图物化,但不适用于增量视图物化。我尝试了我能想出的每一个组合,但到目前为止没有运气。你遇到过类似的事情吗?
【问题讨论】:
-
几个问题:这个确切的代码是否产生了这个错误?我在错误文本 (
as ( ... )) 中看到 CTE。如果是这样,您还可以共享目标目录中的编译代码吗?最后,是否仅在--full-refresh标志时失败,或者当您有where ts...声明时也失败? -
该问题与对 22.7.1 后引入的最新 clickhouse CREATE AS ... EMPTY 语法的支持有关。 dbt-clickhouse 使用这种较新的语法。升级服务器解决了问题。谢谢你的评论!
标签: clickhouse materialized-views dbt dbt-clickhouse