SEMANTIC_VIEW 查询

在

FROM
FROM
子句中使用
SEMANTIC_VIEW()
SEMANTIC_VIEW()
表函数查询语义视图。

语法

SELECT ... FROM SEMANTIC_VIEW( <view_name> { METRICS <metric_expr> [ [ AS ] <alias> ] [ , ... ] | FACTS <fact_expr> [ , ... ] } [ DIMENSIONS <dimension_expr> [ [ AS ] <alias> ] [ , ... ] ] [ WHERE <predicate> ] [ VARIABLES <var_name> = <value> [ , ... ] ] )

参数说明

参数描述
<view_name>
<view_name>
语义视图名称。支持多段标识符(如
db.schema.view
db.schema.view
)。
METRICS <metric_expr> [AS <alias>] [,...]
METRICS <metric_expr> [AS <alias>] [,...]
指定要返回的指标。可以包含引用指标的标量表达式或同一逻辑表内维度的聚合。必须与 DIMENSIONS 或 FACTS 至少指定一个。不能与 FACTS 同时使用。
FACTS <fact_expr> [,...]
FACTS <fact_expr> [,...]
指定要返回的事实。查询不会对 FACTS 进行分组。FACTS 和 DIMENSIONS 必须在同一逻辑表中。不能与 METRICS 同时使用。
DIMENSIONS <dimension_expr> [AS <alias>] [,...]
DIMENSIONS <dimension_expr> [AS <alias>] [,...]
指定要返回的维度。查询按指定的维度进行分组。DIMENSIONS 可以与 METRICS 或 FACTS 任意组合使用。
WHERE <predicate>
WHERE <predicate>
可选。在聚合之前过滤数据。只能引用维度、事实以及使用维度或事实的表达式。
VARIABLES <var_name> = <value> [,...]
VARIABLES <var_name> = <value> [,...]
可选。覆盖语义视图中声明的变量默认值。

使用说明

  1. 至少指定 METRICS、DIMENSIONS 或 FACTS — 三者不能全部省略。
  2. METRICS 和 FACTS 互斥 — 不能在同一个
    SEMANTIC_VIEW()
    SEMANTIC_VIEW()
    查询中同时使用 METRICS 和 FACTS。
  3. FACTS + DIMENSIONS 同表约束 — 使用 FACTS 时,所有 FACTS 和 DIMENSIONS 必须来自同一个逻辑表。
  4. 子句顺序 — METRICS、FACTS、DIMENSIONS 子句的顺序无关,输出列的顺序按书写顺序排列。
  5. WHERE 位置 — WHERE 条件放在
    SEMANTIC_VIEW()
    SEMANTIC_VIEW()
    内部(预聚合过滤),而不是外层 SELECT 的 WHERE(后过滤)。内部 WHERE 只能引用维度。
  6. 通配符 — 支持
    tbl.*
    tbl.*
    限定通配符,展开为指定逻辑表的所有维度。
  7. 标量表达式 — 可以在外层 SELECT 中对 METRICS 结果进行计算。
  8. VARIABLES — 查询时指定的变量值会覆盖 CREATE 时声明的 DEFAULT 值。

权限要求

权限对象说明
任意权限语义视图至少需要对语义视图拥有一个权限

示例

METRICS + DIMENSIONS

SELECT * FROM SEMANTIC_VIEW( tpch_analysis DIMENSIONS customer.customer_name METRICS customer.customer_order_count ) ORDER BY customer_name LIMIT 5;

DIMENSIONS 内部 WHERE

SELECT * FROM SEMANTIC_VIEW( tpch_analysis DIMENSIONS region.r_name METRICS orders.total_revenue WHERE region.r_name = 'ASIA' );

FACTS + DIMENSIONS(同表)

SELECT * FROM SEMANTIC_VIEW( sv DIMENSIONS orders.o_orderdate FACTS orders.raw_price WHERE orders.o_orderdate = '1996-01-02' );

子句顺序无关

-- METRICS 在前 SELECT * FROM SEMANTIC_VIEW( tpch_analysis METRICS orders.total_revenue DIMENSIONS region.r_name ); -- DIMENSIONS 在前 SELECT * FROM SEMANTIC_VIEW( tpch_analysis DIMENSIONS region.r_name METRICS orders.total_revenue );

输出列的顺序按书写顺序排列。

限定通配符

SELECT * FROM SEMANTIC_VIEW( sv DIMENSIONS cust.* METRICS orders.total_rev ) LIMIT 5;

外层标量表达式

SELECT region_name, total_revenue, total_revenue * 2 AS double_revenue FROM SEMANTIC_VIEW( tpch_analysis DIMENSIONS region.r_name METRICS orders.total_revenue );

外层 WHERE + ORDER BY

SELECT * FROM SEMANTIC_VIEW( tpch_analysis DIMENSIONS region.r_name METRICS orders.total_revenue ) WHERE total_revenue > 80000 ORDER BY total_revenue DESC;

WITH VARIABLES

SELECT * FROM SEMANTIC_VIEW( sv DIMENSIONS region.r_name METRICS orders.total_revenue VARIABLES min_amt = 1000 );

相关命令

联系我们
预约咨询
微信咨询
电话咨询
邮件咨询