国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Flink SQL 知其所以然:TopN、Order By、Limit 操作

數據庫 其他數據庫
實時任務中,Order By 子句中必須要有時間屬性字段,并且時間屬性必須為升序時間屬性,即 WATERMARK FOR rowtime_column AS rowtime_column - INTERVAL '0.001' SECOND? 或者 WATERMARK FOR rowtime_column AS rowtime_column。

DML:Order By、Limit 子句

大家好,我是老羊,今天我們來學習 Flink SQL 中的 TopN、Order By、Limit 3個操作。

1.Order By 子句

支持 Batch\Streaming,但在實時任務中一般用的非常少。

實時任務中,Order By 子句中必須要有時間屬性字段,并且時間屬性必須為升序時間屬性,即 WATERMARK FOR rowtime_column AS rowtime_column - INTERVAL '0.001' SECOND 或者 WATERMARK FOR rowtime_column AS rowtime_column。

舉例:

CREATE TABLE source_table_1 (
user_id BIGINT NOT NULL,
row_time AS cast(CURRENT_TIMESTAMP as timestamp(3)),
WATERMARK FOR row_time AS row_time
) WITH (
'connector' = 'datagen',
'rows-per-second' = '10',
'fields.user_id.min' = '1',
'fields.user_id.max' = '10'
);

CREATE TABLE sink_table (
user_id BIGINT
) WITH (
'connector' = 'print'
);

INSERT INTO sink_table
SELECT user_id
FROM source_table_1
Order By row_time, user_id desc

2.Limit 子句

支持 Batch\Streaming,但實時場景一般不使用,但是此處依然舉一個例子:

CREATE TABLE source_table_1 (
user_id BIGINT NOT NULL,
row_time AS cast(CURRENT_TIMESTAMP as timestamp(3)),
WATERMARK FOR row_time AS row_time
) WITH (
'connector' = 'datagen',
'rows-per-second' = '10',
'fields.user_id.min' = '1',
'fields.user_id.max' = '10'
);

CREATE TABLE sink_table (
user_id BIGINT
) WITH (
'connector' = 'print'
);

INSERT INTO sink_table
SELECT user_id
FROM source_table_1
Limit 3

結果如下,只有 3 條輸出:

+I[5]
+I[9]
+I[4]

DML:TopN 子句

  • TopN 定義(支持 Batch\Streaming):TopN 其實就是對應到離線數倉中的 row_number(),可以使用 row_number() 對某一個分組的數據進行排序
  • 應用場景:根據 某個排序 條件,計算某個分組下的排行榜數據
  • SQL 語法標準:
SELECT [column_list]
FROM (
SELECT [column_list],
ROW_NUMBER() OVER ([PARTITION BY col1[, col2...]]
ORDER BY col1 [asc|desc][, col2 [asc|desc]...]) AS rownum
FROM table_name)
WHERE rownum <= N [AND conditions]

ROW_NUMBER():標識 TopN 排序子句

PARTITION BY col1[, col2...]:標識分區字段,代表按照這個 col 字段作為分區粒度對數據進行排序取 topN,比如下述案例中的partition by key,就是根據需求中的搜索關鍵詞(key)做為分區

ORDER BY col1 [asc|desc][, col2 [asc|desc]...]:標識 TopN 的排序規則,是按照哪些字段、順序或逆序進行排序

WHERE rownum <= N:這個子句是一定需要的,只有加上了這個子句,Flink 才能將其識別為一個 TopN 的查詢,其中 N 代表 TopN 的條目數

[AND conditions]:其他的限制條件也可以加上

  • 實際案例:取某個搜索關鍵詞下的搜索熱度前 10 名的詞條數據。

輸入數據為搜索詞條數據的搜索熱度數據,當搜索熱度發生變化時,會將變化后的數據寫入到數據源的 Kafka 中:

數據源 schema:

-- 字段名         備注
-- key 搜索關鍵詞
-- name 搜索熱度名稱
-- search_cnt 熱搜消費熱度(比如 3000)
-- timestamp 消費詞條時間戳

CREATE TABLE source_table (
name BIGINT NOT NULL,
search_cnt BIGINT NOT NULL,
key BIGINT NOT NULL,
row_time AS cast(CURRENT_TIMESTAMP as timestamp(3)),
WATERMARK FOR row_time AS row_time
) WITH (
...
);

-- 數據匯 schema:

-- key 搜索關鍵詞
-- name 搜索熱度名稱
-- search_cnt 熱搜消費熱度(比如 3000)
-- timestamp 消費詞條時間戳

CREATE TABLE sink_table (
key BIGINT,
name BIGINT,
search_cnt BIGINT,
`timestamp` TIMESTAMP(3)
) WITH (
...
);

-- DML 邏輯
INSERT INTO sink_table
SELECT key, name, search_cnt, row_time as `timestamp`
FROM (
SELECT key, name, search_cnt, row_time,
-- 根據熱搜關鍵詞 key 作為 partition key,然后按照 search_cnt 倒排取前 100 名
ROW_NUMBER() OVER (PARTITION BY key
ORDER BY search_cnt desc) AS rownum
FROM source_table)
WHERE rownum <= 100

輸出結果:

-D[關鍵詞1, 詞條1, 4944]
+I[關鍵詞1, 詞條1, 8670]
+I[關鍵詞1, 詞條2, 1735]
-D[關鍵詞1, 詞條3, 6641]
+I[關鍵詞1, 詞條3, 6928]
-D[關鍵詞1, 詞條4, 6312]
+I[關鍵詞1, 詞條4, 7287]

可以看到輸出數據是有回撤數據的,為什么會出現回撤,我們來看看 SQL 語義。

  • SQL 語義

上面的 SQL 會翻譯成以下三個算子:

數據源:數據源即最新的詞條下面的搜索詞的搜索熱度數據,消費到 Kafka 中數據后,按照 partition key 將數據進行 hash 分發到下游排序算子,相同的 key 數據將會發送到一個并發中

排序算子:為每個 Key 維護了一個 TopN 的榜單數據,接受到上游的一條數據后,如果 TopN 榜單還沒有到達 N 條,則將這條數據加入 TopN 榜單后,直接下發數據,如果到達 N 條之后,經過 TopN 計算,發現這條數據比原有的數據排序靠前,那么新的 TopN 排名就會有變化,就變化了的這部分數據之前下發的排名數據撤回(即回撤數據),然后下發新的排名數據

數據匯:接收到上游的數據之后,然后輸出到外部存儲引擎中

上面三個算子也是會 24 小時一直運行的。

責任編輯:武曉燕 來源: 大數據羊說
相關推薦

2022-07-05 09:03:05

Flink SQLTopN

2022-06-10 09:01:04

OverFlinkSQL

2022-06-06 09:27:23

FlinkSQLGroup

2022-05-22 10:02:32

CREATESQL 查詢SQL DDL

2022-05-18 09:02:28

Flink SQLSQL字符串

2022-05-15 09:57:59

Flink SQL時間語義

2022-05-27 09:02:58

SQLHive語義

2021-12-09 06:59:24

FlinkSQL 開發

2022-06-18 09:26:00

Flink SQLJoin 操作

2022-05-12 09:02:47

Flink SQL數據類型

2021-11-28 11:36:08

SQL Flink Join

2022-08-10 10:05:29

FlinkSQL

2021-11-27 09:03:26

flink join數倉

2021-09-12 07:01:07

Flink SQL ETL datastream

2021-12-17 07:54:16

Flink SQLTable DataStream

2022-07-12 09:02:18

Flink SQL去重

2021-12-06 07:15:47

開發Flink SQL

2022-05-09 09:03:04

SQL數據流數據

2021-11-24 08:17:21

Flink SQLCumulate WiSQL

2018-08-27 06:30:49

InnoDBMySQLMyISAM
點贊
收藏

51CTO技術棧公眾號

欧美绝顶高潮抽搐喷水合集| 看黄在线观看| 91亚洲午夜精品久久久久久| av色综合网| 日韩在线黄色| 欧美华人在线视频| 24小时成人在线视频| 在线亚洲午夜片av大片| 三妻四妾的电影电视剧在线观看| 欧美日韩国产高清一区| 国产乱子伦三级在线播放| 亚洲大片精品永久免费| 麻豆电影在线| 五月开心婷婷久久| 亚洲а∨精品天堂在线| 欧美日韩国产一区二区三区| 五月激情在线| 欧美视频在线一区二区三区| 国产美女视频一区二区三区| 欧美日韩高清一区二区不卡| 国产原创视频在线观看| 欧美r级在线观看| 欧亚在线中文字幕免费| 在线观看精品自拍私拍| 色综合一区二区日本韩国亚洲| 久久精品国产一区| 亚洲网一区二区三区| 久久久人成影片一区二区三区| 57pao国产一区二区| 欧美专区在线播放| 成人免费电影网址| 国产精品免费一区二区三区观看 | 日韩美女视频一区二区 | 久久国产精品99久久人人澡| 性做爰过程免费播放| 国产成人av影院| 日韩中文字幕组| 亚洲国产婷婷综合在线精品| av电影在线播放高清免费观看| 欧美不卡一区二区| 日韩av黄色| 国产精品久久久久秋霞鲁丝| 亚洲精品免费观看| 4444亚洲人成无码网在线观看| 欧美极品少妇xxxxⅹ高跟鞋| 天堂а在线中文在线无限看推荐| 欧美一二区视频| 精品午夜视频| 成人羞羞国产免费| 美女精品一区二区| 日韩免费高清在线| 亚洲va国产va欧美va观看| 嫩草在线视频| yellow中文字幕久久| 日本一本不卡| 制服诱惑一区| 日韩一区欧美一区| 日本暖暖在线视频| www.亚洲一区| 亚洲美女视频| 日韩一区二区高清视频| 《视频一区视频二区| bt在线麻豆视频| 欧美激情视频在线免费观看 欧美视频免费一 | 国产精品免费小视频| 久久精品伊人| 成人禁在线观看网站| 欧美理论片在线| 97精品资源在线观看| 91在线中文字幕| 国产精品一区久久久久| 桥本有菜亚洲精品av在线| 日韩精品免费在线观看| 国产尤物久久久| 日本天堂免费a| 91福利小视频| 成人搞黄视频| 国产精品无码乱伦| 欧美午夜片欧美片在线观看| 99久久999| 日本一区二区免费看| 悠悠色在线精品| 777午夜精品电影免费看| 99理论电影网| 国产精品毛片大码女人| 成年女人在线看片| 51成人做爰www免费看网站| 91老师片黄在线观看| mm1313亚洲国产精品美女| 国产成人精品视频在线| 成人av资源站| 色屁屁www国产馆在线观看| 日韩女优人人人人射在线视频| 韩日欧美一区二区三区| 成年人免费在线视频| 秋霞午夜一区二区| 久久在线免费观看| 欧美magnet| 午夜精品电影在线观看| 日韩欧美在线播放| 亚洲人和日本人hd| 浮妇高潮喷白浆视频| 精品久久人人做人人爰| 欧美高清不卡| 最近最新mv在线观看免费高清| 色综合男人天堂| av中文字幕亚洲| 国模套图日韩精品一区二区| 日本一区精品| 欧美日韩成人在线一区| 亚洲女同另类| 亚洲伦理在线| 国产日韩欧美夫妻视频在线观看| 亚洲欧洲日韩av| 风间由美一区二区av101| 欧美日韩黄色一级片| 亚洲人av在线影院| 狠狠色伊人亚洲综合成人| 99久久精品免费观看国产| 国产69精品久久久久9999apgf| 亚洲亚洲人成综合网络| 欧美精品中文| www.国产精| 欧美做受高潮1| 亚洲欧美激情插 | 男女视频在线看| 久久深夜福利免费观看| 99麻豆久久久国产精品免费| 中文在线免费视频| 日韩精品第1页| 亚洲天堂网站在线观看视频| 国产福利一区在线| 成人四虎影院| 国产日韩成人内射视频| 欧美激情国产日韩精品一区18| 国产日韩成人精品| 精品在线网站观看| 丁香婷婷自拍| 91免费版网站入口| 欧美精品在线一区二区| 美女视频黄 久久| 国产美女高潮在线观看| 亚洲精品少妇一区二区| 色偷偷噜噜噜亚洲男人| 成人午夜av影视| 国产一区 二区| 中文字幕在线观看第三页| 欧美在线精品免播放器视频| 午夜欧美视频在线观看| 亚洲二区在线| 漫画在线观看av| 国产a级一级片| 欧美在线www| 色国产综合视频| 免费av网站大全久久| 国产资源一区| 免费白浆视频| 精品亚洲一区二区三区四区五区高| 精品捆绑美女sm三区| 波多野结衣精品在线| 国产一区丝袜| 黄色小视频在线免费观看| 亚洲v日韩v欧美v综合| 久久综合亚洲社区| 午夜精品一区二区三区免费视频 | 99国产超薄肉色丝袜交足的后果| 4438x成人网最大色成网站| 国产精品18久久久久久久久久久久 | 亚洲人一二三区| 国户精品久久久久久久久久久不卡| 婷婷色在线播放| 99精品视频播放| 亚洲a中文字幕| 亚洲久久久久久久久久| 国产精品久久夜| 国产欧美三级| 深夜福利一区二区三区| 久草福利在线| 日韩极品视频在线观看| 国产脚交av在线一区二区| 精品国产人成亚洲区| 国产免费久久精品| 免费看的黄色欧美网站| 国产精品xxx在线观看| 国产调教视频在线观看| 麻豆三级在线观看| 热re99久久精品国99热蜜月| 久久青草精品视频免费观看| 欧美一区二区三区在线电影| 中文在线资源观看网站视频免费不卡| 国产综合精品| 欧美黄视频在线观看| 在线视频婷婷| 777视频在线| 亚洲精品国产精品国自产| 国产成人精品视频| 伊人久久久久久久久久| 欧美日韩www| 亚洲欧美一区二区三区国产精品 | 亚洲国产成人一区|