TrinoUserError (type=USER_ERROR, name=SYNTAX_ERROR, message="line 7:26: mismatched input 'COUNT'. Expecting: '*', <expression>")

TrinoUserError (type=USER_ERROR, name=SYNTAX_ERROR, message="line 7:26: mismatched input 'COUNT'. Expecting: '*', <expression>")

我正在使用 dbt-trino,出于某种原因,它不理解直接在 MySQL 上执行的 MySQL 查询。在此查询中,我想 select 对上个月创建的记录进行分组。 查询:

SELECT order_location, COUNT(*) as order_count
FROM {{ ref('x_stg_order_fields') }}
WHERE
    created_at >=  DATE_FORMAT( CURRENT_DATE - INTERVAL 1 MONTH, '%Y/%m/01' )
AND
    created_at <  DATE_FORMAT( CURRENT_DATE, '%Y/%m/01' )
GROUP BY order_location

虽然此查询直接在 MySQL 上快速且成功地运行,但它 returns 在使用 dbt 运行 执行时出现此错误:

TrinoUserError(type=USER_ERROR, name=SYNTAX_ERROR, message="line 7:53: mismatched input 'COUNT'. Expecting: '*', <expression>")

这是否意味着 dbt-trino 不支持所有 MySQL 功能?

该错误来自您的数据库,而不是来自 dbt 本身。 dbt 不解析您的 SQL 命令,它只是将它们传递给您连接的数据库。

我的猜测是 {{ ref('x_stg_order_fields' }} 可能指的是一个包含语法错误的临时模型,或者可能是一个名为 count 的字段未被引用?

您可以通过检查项目中的 target 目录,查看 dbt 试图 运行 在您的数据库中的 SQL 来确认或反驳这一点。具体来说,target/run/path/to/your_model.sql 将向您显示正在执行的实际命令。您应该能够检查该文件中的第 7 行,第 53 列,您将看到 trino 出错的代码。