Dataform的sqlx文件是否支持CTE(公共表表达式)或子查询?
Dataform sqlx文件对CTE(公共表表达式)和子查询的支持
完全支持。sqlx是Dataform基于标准SQL扩展出的模板格式,核心SQL语法完全兼容标准SQL规范,CTE和子查询都能正常使用,你可以像编写普通SQL那样写这两种语法,同时还能结合Dataform特有的功能(比如用ref()引用其他数据集、定义变量等)。
举两个实际使用的示例:
CTE示例
config { type: "table" } WITH user_orders AS ( SELECT user_id, COUNT(*) AS order_count FROM ${ref('raw_orders')} WHERE order_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY) GROUP BY user_id ) SELECT u.user_id, u.name, COALESCE(uo.order_count, 0) AS recent_order_count FROM ${ref('raw_users')} u LEFT JOIN user_orders uo ON u.user_id = uo.user_id
子查询示例
config { type: "view" } SELECT product_id, product_name, (SELECT AVG(price) FROM ${ref('raw_product_prices')} p WHERE p.product_id = main.product_id) AS avg_price FROM ${ref('raw_products')} main WHERE stock_quantity > 0
只要你的底层数据仓库(比如BigQuery、Snowflake等)支持对应的SQL语法,sqlx里的CTE和子查询就能正常运行,Dataform不会限制这类标准SQL的使用。
内容的提问来源于stack exchange,提问作者BMMR data engineer
相关产品推荐
相关产品推荐

