Flink系列之:SELECT & WHERE clause

Flink系列之:SELECT & WHERE clause

  • 一、SELECT & WHERE clause
  • 二、SELECT DISTINCT

  • 适用于流、批

一、SELECT & WHERE clause

  • 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

二、SELECT DISTINCT

如果指定 SELECT DISTINCT,则将从结果集中删除所有重复行(每组重复项中保留一行)。

SELECT DISTINCT id FROM Orders

对于流查询,计算查询结果所需的状态可能会无限增长。状态大小取决于不同行的数量。您可以为查询配置提供适当的状态生存时间 (TTL),以防止状态大小过大。请注意,这可能会影响查询结果的正确性。

你可能感兴趣的:(Flink,flink,Flink系列,SELECT,WHERE,clause)