【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;
相关推荐
M78佐菲2 小时前
Linux学习笔记:TCP协议
linux·笔记·学习·tcp/ip·算法
噜~噜~噜~3 小时前
操作系统笔记-2.3.5.1.1生产者-消费者问题
笔记·操作系统
2601_962065253 小时前
[MySQL] SQL优化之性能分析
java·sql·mysql
Huathy-雨落江南,浮生若梦7 小时前
Caddy 学习笔记 - 反向代理与 IP 封禁
笔记·学习·tcp/ip
青春之我_XP7 小时前
MySQL 常用日期函数 实战指南
数据库·sql·mysql·数据分析·数据库开发·日期函数
谢白羽8 小时前
SGLang的AWQ量化笔记
笔记·python·sglang
噜~噜~噜~8 小时前
操作系统笔记-2.3.5.2 读者-写者问题
笔记·操作系统
人生百态,人生如梦9 小时前
每日论文解读(9.1)——ReToolSQL:面向鲁棒Text-to-SQL的Agentic强化学习与工具增强两阶段训练框架
数据库·sql
麻瓜code9 小时前
【MySQL】SQL优化实战:从慢查询定位到查询改写
数据库·sql·mysql
MindUp10 小时前
企业私有化文件管理系统选型实录:从部署架构到AI能力的技术调研笔记
人工智能·笔记·架构