Flink SQL TopN

  • Flink SQL 對于批處理(Batch)和流處理(streaming)模式的SQL,都支持 Top-N 查詢。
  • Top-N 查詢可以根據指定列排序后獲得前 N 個最小或最大值。并且該結果集還可用于進一步分析。
  • Flink 使用 OVER 窗口子句和過濾條件的組合來表達一個 Top-N 查詢。借助 OVER 窗口的 PARTITION BY 子句能力,Flink 也能支持分組 Top-N。

1、SQL 語法標準:

SELECT [column_list]
FROM (SELECT [column_list],ROW_NUMBER() OVER ([PARTITION BY col1[, col2...]]ORDER BY col1 [asc|desc][, col2 [asc|desc]...]) AS rownumFROM table_name)
WHERE rownum <= N [AND conditions]

2、參數說明:

  • ROW_NUMBER():根據分區數據的排序,為每一行分配一個唯一且連續的序號,從 1 開始。目前,只支持 ROW_NUMBER 作為 OVER 窗口函數。未來會支持 RANK() 和 DENSE_RANK()。
  • PARTITION BY col1[, col2…]:指定分區字段。每個分區都會有一個 Top-N 的結果。
  • ORDER BY col1 [asc|desc][, col2 [asc|desc]…]: 指定排序列。 每個列的排序類型(ASC/DESC)可以不同。
  • WHERE rownum <= N: Flink 需要 rownum <= N 才能識別此查詢是 Top-N 查詢。 N 表示將要保留 N 個最大或最小數據。
  • [AND conditions]: 可以在 WHERE 子句中添加其他條件,但是這些其他條件和 rownum <= N 需要使用 AND 結合。

3、注意事項:

輸出的位置必須支持更新,比如mysql、clickhouse等關系型數據庫,print等
不可以輸出到文件系統,否則會報錯誤:

Exception in thread "main" org.apache.flink.table.api.TableException: Table sink 'default_catalog.default_database.sink_order' doesn't support consuming update and delete changes which is produced by node Rank(strategy=[UndefinedStrategy], rankType=[ROW_NUMBER], rankRange=[rankStart=1, rankEnd=10], partitionBy=[dataType], orderBy=[id ASC], select=[date, source_length])

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/39977.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39977.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39977.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

近 2000 臺 Citrix NetScaler 服務器遭到破壞

Bleeping Computer 網站披露在某次大規模網絡攻擊活動中&#xff0c;一名攻擊者利用被追蹤為 CVE-2023-3519 的高危遠程代碼執行漏洞&#xff0c;入侵了近 2000 臺 Citrix NetScaler 服務器。 研究人員表示在管理員安裝漏洞補丁之前已經有 1200 多臺服務器被設置了后門&#x…

python學習筆記——軟件安裝

目錄 1. 安裝并驗證Python環境 2. 安裝并設置Visual Studio Code編輯器 3. 設置Visual Studio Code編輯器 4.軟件安裝包 1. 安裝并驗證Python環境 首先&#xff0c;雙擊打開python安裝包。 注意?? &#xff1a; 安裝之前需要關閉殺毒軟件&#xff0c;比如360。 然后&am…

如何快速優化 CnosDB 數據庫性能與延遲:使用 Jaeger 分布式追蹤系統

在正式的生產環境中&#xff0c;數據庫的性能和延遲對于確保系統的穩定和高效運行至關重要。特別是在與 CnosDB 數據庫進行交互時&#xff0c;更深入地了解其表現變得尤為重要。這時Jaeger 分布式追蹤系統發揮了巨大的作用。在本篇博客中&#xff0c;我們將深入探討如何通過使用…

探索網絡架構的關鍵角色:六種常用的服務器類型

在今天的數字時代&#xff0c;服務器是支撐各種在線服務和應用的基石。不同類型的服務器在網絡架構中扮演著不同的角色&#xff0c;從網頁傳輸到電子郵件交換&#xff0c;再到文件傳輸和內容分發。本文將深入探討六種最常用的服務器類型&#xff0c;解釋它們的功能和重要性&…

在 OpenCV 中使用深度學習進行年齡檢測-附源碼

文末附完整源碼和模型文件下載鏈接 在本教程中,我們將了解使用 OpenCV 創建年齡預測器和性別分類器項目的整個過程。 年齡檢測 我們的目標是創建一個程序,使用圖像來預測人的性別和年齡。但預測年齡可能并不像你想象的那么簡單,為什么呢?您可能會認為年齡預測是一個回歸問…

【【萌新的STM32學習-8】】

萌新的STM32學習-8 STM32CubeMX 是由 ST 公司開發的圖形化代碼自動生成工具&#xff0c;能夠快速生成初始化代碼&#xff0c; 如配置 GPIO&#xff0c;時鐘樹&#xff0c;中間件等&#xff0c;使用戶專注于業務代碼的開發。現在 ST 主推 HAL 庫代碼&#xff0c; 經典的標準外設…

數據治理有哪些產品

數據治理是現代企業管理中至關重要的一個環節。隨著企業的數據量不斷增長&#xff0c;如何有效地管理和利用數據成為了一個亟待解決的問題。幸運的是&#xff0c;市場上已經涌現出了許多優秀的數據治理產品&#xff0c;下面就來介紹一些常見的數據治理產品。 首先&#xff0c;我…

配置使用Gitee賬號認證登錄Grafana

三方社會化身份源 集成gitee第三方登錄 第三方登錄的原理 所謂第三方登錄&#xff0c;實質就是 OAuth 授權。用戶想要登錄 A 網站&#xff0c;A 網站讓用戶提供第三方網站的數據&#xff0c;證明自己的身份。獲取第三方網站的身份數據&#xff0c;就需要 OAuth 授權。 舉例來…

Redis中的Key是否在過期時間到達后立即被刪除?詳解Redis的過期策略

AIGC最全資料包 https://zkk-1300025204.cos.ap-nanjing.myqcloud.com/%E5%8F%B2%E4%B8%8A%E6%9C%80%E5%85%A8StableDiffusion%E8%B5%84%E6%96%99%E5%8C%85.csv作者&#xff1a;zhaokk 在現代軟件開發中&#xff0c;性能和數據存儲是至關重要的。為了在高并發環境下提供快速的…

時序預測 | MATLAB實現基于CNN-GRU卷積門控循環單元的時間序列預測-遞歸預測未來(多指標評價)

時序預測 | MATLAB實現基于CNN-GRU卷積門控循環單元的時間序列預測-遞歸預測未來(多指標評價) 目錄 時序預測 | MATLAB實現基于CNN-GRU卷積門控循環單元的時間序列預測-遞歸預測未來(多指標評價)預測結果基本介紹程序設計參考資料 預測結果 基本介紹 MATLAB實現基于CNN-GRU卷積…

qrcode.react生成二維碼

qrcode.react 是一個**用于生成二維碼&#xff08;QR 碼&#xff09;的 React 組件庫。**它提供了一個 React 組件&#xff0c;可以輕松地在 React 應用程序中生成和顯示 QR 碼。 使用 qrcode.react&#xff0c;可以以聲明式的方式在 React 組件中定義 QR 碼的內容、尺寸、顏色…

分布式 - 消息隊列Kafka:Kafka 消費者的消費位移

文章目錄 01. Kafka 分區位移02. Kafka 消費位移03. kafka 消費位移的作用04. Kafka 消費位移的提交05. kafka 消費位移的存儲位置06. Kafka 消費位移與消費者提交的位移07. kafka 消費位移的提交時機08. Kafka 維護消費狀態跟蹤的方法 01. Kafka 分區位移 對于Kafka中的分區而…

sql server 存儲過程 set ansi_nulls set quoted_identifier,out 、output

SQL-92 標準要求在對空值(NULL) 進行等于 () 或不等于 (<>) 比較時取值為 FALSE。 當 SET ANSI_NULLS 為 ON 時&#xff0c;即使 column_name 中包含空值&#xff0c;使用 WHERE column_name NULL 的 SELECT 語句仍返回零行。即使 column_name 中包含非空值&#xff0c…

5G無人露天礦山解決方案

1、5G無人露天礦山解決方案背景 ①2010.10&#xff0c;國家安監總局《金屬非金屬地下礦山安全避險“六大系統”安裝使用和監督檢查暫行規定》 ②2016.03&#xff0c;國家發改委《能源技術革命創新行動計劃&#xff08;2016-2030&#xff09;》&#xff0c;2025 年重點煤礦區采…

每天一道leetcode:1192. 查找集群內的關鍵連接(圖論困難tarjan算法)

今日份題目&#xff1a; 力扣數據中心有 n 臺服務器&#xff0c;分別按從 0 到 n-1 的方式進行了編號。它們之間以 服務器到服務器 的形式相互連接組成了一個內部集群&#xff0c;連接是無向的。用 connections 表示集群網絡&#xff0c;connections[i] [a, b] 表示服務器 a …

Quivr 基于GPT和開源LLMs構建本地知識庫 (更新篇)

一、前言 自從大模型被炒的越來越火之后&#xff0c;似乎國內涌現出很多希望基于大模型構建本地知識庫的需求&#xff0c;大概在5月底的時候&#xff0c;當時Quivr發布了第一個0.0.1版本&#xff0c;第一個版本僅僅只是使用LangChain技術結合OpenAI的GPT模型實現了一個最基本的…

升級STM32電機PID速度閉環編程:從F1到F4的移植技巧與實例解析

引言&#xff1a; 在嵌入式系統開發中&#xff0c;STM32系列微控制器廣泛應用于各種應用領域。而對于直流有刷電機的控制&#xff0c;PID速度閉環是一種常用的控制方式。本文將以此為例&#xff0c;探討如何從STM32F1系列移植到STM32F4系列&#xff0c;并詳細介紹HAL庫在不同型…

Python學習筆記_基礎篇(十)_socket編程

本章內容 1、socket 2、IO多路復用 3、socketserver Socket socket起源于Unix&#xff0c;而Unix/Linux基本哲學之一就是“一切皆文件”&#xff0c;對于文件用【打開】【讀寫】【關閉】模式來操作。socket就是該模式的一個實現&#xff0c;socket即是一種特殊的文件&…

spring boot 簡單整合 Redis

1.添加依賴<!-- redis --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!-- commons-pool2 --><dependency><groupId>org.ap…