Flink SQL 查询解析
Flink SQL 查询解析
With语法
WITH提供了一种方法来编写辅助语句,以便在较大的查询中使用。这些语句通常被称为公共表表达式(Common Table Expression, CTE),可以认为它们定义了仅为一个查询而存在的临时视图。
WITH语句的语法是:
WITH <with_item_definition> [ , ... ]
SELECT ... FROM ...;
<with_item_defintion>:
with_item_name (column_name[, ...n]) AS ( <select_query> )
下面的示例定义了一个公共表表达式orders_with_total,并在一个GROUP BY查询中使用它。
WITH orders_with_total AS (
SELECT order_id, price + tax AS total
FROM Orders
)
SELECT order_id, SUM(total)
FROM orders_with_total
GROUP BY order_id;
SELECT & WHERE表达式
SELECT语句的一般语法是:
SELECT select_list FROM table_expression [ WHERE boolean_expression ]
table_expression指向任何数据源。它可以是一个现有的表、视图或VALUES子句、多个现有表的连接结果或一个子查询。假设这个表在目录中可用,下面将从Orders中读取所有行。
SELECT * FROM Orders
select_list规范意味着查询将解析所有列。但是,在生产环境中不鼓励使用,因为它使查询在编目更改时不够健壮。相反,select_list可以指定可用列的子集,或者使用所述列进行计算。例如,如果Orders有名为order_id、price和tax的列,你可以写以下查询:
SELECT order_id, price + tax FROM Orders
查询还可以使用VALUES子句使用内联数据。每个元组对应一行,可以提供别名来为每个列分配名称。
SELECT order_id, price FROM (VALUES (1, 2.0), (2, 3.1)) AS t (order_id, price)
可以基于WHERE子句对行进行过滤。
SELECT price + tax FROM Orders WHERE id = 10
此外,可以对单行的列调用内置和用户定义的标量函数。用户定义函数在使用前必须在目录中注册。
SELECT PRETTY_PRINT(order_id) FROM Orders
Powered by Waline v2.14.1