【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;
相关推荐
大模型最新论文速读22 分钟前
text-to-sql:从学术玩具到生产落地
数据库·sql
一支蜉蝣1 小时前
Day26 XD安全学习笔记--PHP 应用&模版引用&Smarty渲染&MVC 模型&数据联动&RCE 安全
笔记·网络安全·html·php
東隅已逝,桑榆非晚1 小时前
算法3.双指针法-快乐数
c++·笔记·学习·算法
Decay__1 小时前
15_MySQL 数据同步与迁移方案 —— 复制 / DataX / Canal / 异构同步(对标 Oracle GoldenGate)
运维·数据库·sql·mysql·架构
欢欢李1 小时前
【LTE L3 笔记 01】LTE空口特点
笔记·无线通信·物理层·lte·空口协议
zjx23881 小时前
oracle11g转Gbase8s库SQL常见问题修改
数据库·sql
ZZHow10243 小时前
神经网络与深度学习笔记_Day1
人工智能·pytorch·笔记·python·深度学习·神经网络·机器学习
杨云龙UP3 小时前
Oracle 同义词(SYNONYM)详解及 Toad for Oracle SQL 智能补全配置实战
运维·数据库·sql·oracle·同义词·toad·toad for oracle
ACP广源盛139246256733 小时前
选型笔记:HDMI2.1 四进一出切换中继方案 GSV6705@ACP 评估
笔记·硬件架构·硬件工程·视频·国产芯片
Z21-X3 小时前
云原生运维实战笔记:华为云存储类服务全景解析——EVS、OBS、SFS与CBR深度实践
运维·笔记·学习·云原生·华为云