【博学谷学习记录】超强总结,用心分享| FlinkSQL

文章展示了如何使用CREATETABLE创建数据表,包括定义字段类型和使用Datagen连接器生成数据。接着,它演示了SQL查询中的UNION和UNIONALL操作,以及它们在处理集合时的区别。此外,还介绍了数据库管理操作,如USE和SHOW命令,用于切换和查看元数据库、数据库、表和视图。最后,文章解释了EXPLAINPLAN命令,用于查看SQL查询的执行计划,这对于优化查询性能至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.creat语句

#1.创建表
CREATE TABLE show_log_table (
log_id BIGINT,
show_params ARRAY<STRING>
) WITH (
'connector' = 'datagen',
'rows-per-second' = '1',
'fields.log_id.min' = '1',
'fields.log_id.max' = '10'
);


#2.SQL查询
SELECT
log_id,
show_params,
t.show_param as show_param
FROM show_log_table
-- array 炸开语法
CROSS JOIN UNNEST(show_params) AS t (show_param);

2.集合操作

#1.创建view1
create view t1(s) as values ('c'), ('a'), ('b'), ('b'), ('c');

#2.创建view2
create view t2(s) as values ('d'), ('e'), ('a'), ('b'), ('b');

#3.SQL查询
#3.1 union操作
(SELECT s FROM t1) UNION (SELECT s FROM t2);
#3.2 union all操作
(SELECT s FROM t1) UNION ALL(SELECT s FROM t2);


#4.结果
#4.1 union的结果
c
a
b
d
e
#4.2 union all的结果
c
a
b
b
c
d
e
a
b
b

#5.结论
union求并集,会去重。
union all求并集,不会去重。

3.use & show语法

#1.查看元数据库
show catalogs;

#2.切换元数据库
use catalog default_catalog;

#3.查看数据库
show databases;

#4.切换数据库
use default_database;

#5.查看表
show tables;

#6.查看视图
show views;

#7.查看当前的数据库
show current database;

#8.查看当前的元数据库
show current catalog;
~~~

### explain

explain,查看SQL的执行计划,语法如下:

~~~shell
explain plan for SQL语句
~~~

案例如下:

~~~shell
#1.创建表
CREATE TABLE source_table (
    user_id BIGINT COMMENT '用户 id',
    name STRING COMMENT '用户姓名',
    server_timestamp BIGINT COMMENT '用户访问时间戳',
    proctime AS PROCTIME()
) WITH (
  'connector' = 'datagen',
  'rows-per-second' = '1',
  'fields.name.length' = '1',
  'fields.user_id.min' = '1',
  'fields.user_id.max' = '10',
  'fields.server_timestamp.min' = '1',
  'fields.server_timestamp.max' = '100000'
);




#2.查看执行计划
EXPLAIN PLAN FOR
select user_id,
       name,
       server_timestamp
from (
      SELECT
          user_id,
          name,
          server_timestamp,
          row_number() over(partition by user_id order by proctime) as rn
      FROM source_table
)
where rn = 1;
~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值