【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;
相关推荐
星恒随风1 小时前
C++ STL 详解:list 的使用、迭代器失效、模拟实现与 vector 对比
开发语言·数据结构·c++·笔记·学习·list
一起努力啊~1 小时前
DataWhale组队学习笔记--llm-algo-leetcode(五)
笔记·学习·llm
是上好佳佳佳呀2 小时前
【机器学习|DAY03】K近邻算法(KNN)笔记
笔记·机器学习·近邻算法
Csvn11 小时前
📊 SQL 入门 Day 8:集合操作 — 用 SQL 做数学里的"并交差"
后端·sql
圣光SG12 小时前
Servlet学习笔记
笔记·学习·servlet
奋发向前wcx12 小时前
y1,y2总复习笔记5 2026.7.19
数据结构·笔记·算法
@Mike@14 小时前
02-数据库学习笔记(SQL引擎)
数据库·笔记·学习
六点_dn15 小时前
RabbitMQ学习笔记-定义与作用
笔记·学习·rabbitmq
Irene199117 小时前
大数据开发的常见实践:把 SQL 直接写在 Shell 脚本里 ER图 数据血缘
sql·数据血缘·er
川石课堂软件测试17 小时前
安全测试|常见SQL注入攻击方式、实例及预防
服务器·数据库·sql·功能测试·测试工具·安全·单元测试