【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;
相关推荐
GlueNa2SiO311 小时前
第十八章 Linux故障排查与恢复
linux·服务器·笔记·学习
灯澜忆梦12 小时前
【MySQL10】进阶篇 | 索引_#2性能优化
数据库·sql·mysql·性能优化
xian_wwq12 小时前
【学习笔记】Context Engineering,AI Agent 真正的内存管理-4/16
笔记·学习·context
疯狂打码的少年14 小时前
【数据结构】队列:定义、顺序队列与链式队列
数据结构·笔记
LeoZY_16 小时前
LinkScope 使用笔记:基于 OpenOCD 的通用硬件芯片调试助手
笔记·单片机·嵌入式硬件·开源软件
不会代码的小猴16 小时前
标准模板库(STL)
开发语言·c++·笔记·算法
爱莉希雅&&&16 小时前
K8s NFS+StorageClass+PV/PVC+Deployment 实战笔记
笔记·容器·kubernetes
Exclusive_Cat16 小时前
MySQL回表机制解析与优化策略
数据库·sql
渣渣盟17 小时前
当反压问题解决后,如何进一步优化 Flink 作业的 Checkpoint 性能,让大状态作业也能稳定运行?
大数据·flink
影寂ldy17 小时前
SQL 索引(Index)完整笔记
数据库·笔记·sql