【FlinkSQL笔记】(二)Flink SQL 基础语法详解

一、数据类型(常用)

Flink SQL 数据类型和MySQL高度兼容,常用类型如下:

  • STRING:字符串(对应MySQL varchar)

  • INT:整型

  • BIGINT:长整型(计数、时间戳常用)

  • DOUBLE:浮点型

  • TIMESTAMP(3):高精度时间戳(实时任务必备,保留3位毫秒)

  • BOOLEAN:布尔值

二、核心建表语法(重点Kafka源表为主)

Kafka是Flink实时任务最核心数据源,以下是生产通用标准模板,可直接复用:

sql 复制代码
-- 实时数据源:读取Kafka JSON数据
CREATE TABLE kafka_source (
    vin STRING,               -- 车辆唯一标识
    online_status INT,        -- 在线状态
    high_voltage STRING,     -- 高压状态
    event_time TIMESTAMP(3),  -- 数据产生时间(核心!用于开窗、水印)
    -- 水印定义:容忍5秒数据乱序,生产通用配置
    WATERMARK FOR event_time AS event_time - INTERVAL '5' SECOND
) WITH (
    'connector' = 'kafka',
    'topic' = 'vehicle_realtime_data',        -- 你的Kafka主题名
    'properties.bootstrap.servers' = '127.0.0.1:9092',  -- Kafka地址
    'properties.group.id' = 'flink_sql_consumer_01',    -- 消费者组
    'format' = 'json',                        -- 数据格式:JSON
    'scan.startup.mode' = 'latest'            -- 启动消费位置:最新数据
);

参数说明:

  • connector:指定数据源类型,固定kafka

  • topic:需要消费的Kafka主题名称

  • bootstrap.servers:Kafka集群地址端口

  • group.id:消费者组,自定义不重复即可,用于记录消费偏移量

  • format:数据序列化格式,企业99%为json

  • scan.startup.mode:启动规则

    • latest:从当前最新数据开始消费(生产默认)

    • earliest:从头消费所有历史数据(测试用)

三、 结果表建表语法(数据输出)

用于将实时计算结果,写入Kafka、MySQL等存储,模板如下:

sql 复制代码
-- 结果输出表:写入Kafka
CREATE TABLE kafka_sink (
    vin STRING,
    online_duration BIGINT,
    alert_time TIMESTAMP(3),
    alert_msg STRING
) WITH (
    'connector' = 'kafka',
    'topic' = 'vehicle_alert_result',
    'properties.bootstrap.servers' = '127.0.0.1:9092',
    'format' = 'json'
);

1、 数据过滤 WHERE

sql 复制代码
SELECT *
FROM kafka_source
WHERE online_status = 1  -- 只筛选在线车辆
  AND high_voltage != '01'; -- 筛选未上高压车辆

2、字段选取、别名

sql 复制代码
SELECT
    vin AS car_no,
    online_status,
    event_time AS create_time
FROM kafka_source;

3、分组聚合 GROUP BY

sql 复制代码
SELECT
    vin,
    COUNT(*) AS data_count,  -- 单车辆上报次数
    MAX(online_status) AS max_status
FROM kafka_source
GROUP BY vin;

4、去重 DISTINCT

sql 复制代码
SELECT DISTINCT vin
FROM kafka_source;
相关推荐
Theo·Chan44 分钟前
机房断电搞崩服务器 | 人大金仓 V8 全量备份跨实例完整恢复实录
sql·信创·kingbase·金仓
伊布拉西莫2 小时前
【流畅的Python】第20章:并发执行器 — 学习笔记
笔记·python·学习
AOwhisky3 小时前
学习自测与解析:MySQL第五、六、七期核心知识点详解
运维·数据库·笔记·学习·mysql·云计算
持敬chijing3 小时前
Web渗透之SQL注入总结
sql·安全·web安全·网络安全·网络攻击模型·web
niuniuyi~4 小时前
QT学习笔记
笔记·qt·学习
咸甜适中4 小时前
rust语言学习笔记Trait(十六)Error(错误)
笔记·学习·rust
davawang4 小时前
基于SQL实现分组的文字排序聚合
sql·分析函数·数据平台
xuhaoyu_cpp_java4 小时前
项目学习(三)代码生成器
java·经验分享·笔记·学习
my_daling4 小时前
松下伺服驱动器参数保存流程(已在松下A5上验证)
笔记
智者知已应修善业5 小时前
【51单片机初始化D5-D8亮,每按键按下D1到D4全亮,再按下恢复,如此循环】2024-3-26
c++·经验分享·笔记·算法·51单片机