1. 程式人生 > >集算器實現記錄合併

集算器實現記錄合併

  表1(T1)中儲存了單獨的id和name欄位,部分源資料如下:

  id    name

  1     a

  2     b

  3     c

  4     d

  5     e 

  表2(T2)中儲存了多個id組成的ids欄位,其值如下:

  ids

  1,2,3

  4,3

  1,2,3

  現在要根據T1中的id和name,將T2中的ids轉化為對應的多個name組成的記錄,比如上述T2轉換後的結果為:

  a,b,c
  d,c
  a,b,c
  集算器實現程式碼如下:

   A1,A2:執行SQL將T1、T2的資料取出。

   A3:迴圈A2中的記錄,將每個ids值轉為序列後,與T1中的記錄匹配得到name序列,而後轉換為逗號分隔的記錄。結果如下:

     上述寫法要假定id為整數且連續,如果id不連續,那麼A3的寫法可以改為:

         A3>A1.primary(id)

A4=A2.(ids.array().(A1.find(~).name )[email protected]())

       用SQL實現這個問題需要用到子查詢生成一個唯一分組號,再用較複雜的JOIN實現,以MySQL為例寫成這樣:

select group_concat(t1.name) names from(
select @row:[email protected]+1 as gid,ids from t2,(SELECT @row :=0 ) r
) t2 left join t1 on find_in_set(t1.id,t2.ids) group by t2.gid

         而且,這個SQL只能用於T2的ids無重複值時,如果有重複值結果只會保留一個,比如:“2,1,2,3”算完的結果是”a,b,c”而不是”b,a,b,c”,相對來講,集算器的語法要更直觀易懂且適用面更廣

   集算器可被報表工具或java程式呼叫,呼叫的方法也和普通資料庫相似,使用它提供的JDBC介面即可向java主程式返回ResultSet形式的計算結果,具體方法可參考相關文件。


相關推薦

實現記錄合併

  表1(T1)中儲存了單獨的id和name欄位,部分源資料如下:   id    name   1     a   2     b   3     c   4     d   5     e    表2(T2)中儲存了多個id組成的ids欄位,其值如下:

10 行程式碼實現寫詩機器人

可閱讀原文:http://c.raqsoft.com.cn/article/1536756719594?r=alice 集算器不僅有大資料計算,還有詩和遠方。最近看到不少寫詩機器人的新聞,於是嘗試用集算器簡單地實現一個。這個實現真的很簡單,簡單到只有10幾行程式碼,請看實現步驟:  

10 行程式碼,實現寫詩機器人

集算器不僅有大資料計算,還有詩和遠方。最近看到不少寫詩機器人的新聞,於是嘗試用集算器簡單地實現一個。這個實現真的很簡單,簡單到只有10幾行程式碼,請看實現步驟: 1.下載字典和詩詞 從網上找一個用於分詞的字典檔案,裡面記錄著每個中文詞彙的詞性。我從GitHub上找了一

實現文字比對

       控制檯命令、JAVA、python、perl都可以進行簡單的文字比對,但這些工具不擅長集合運算、結構化運算,編寫多執行緒程式碼較複雜,處理多欄位對比、大檔案對比、異構檔案對比等情況時很繁瑣。        免費的集算器支援集合運算、遊標運算、結構化運算,簡化了多執行緒程式碼,可以彌補上述不足。

(倉庫版)發布,黑科技獲得用戶好評

集群組表 並行列存 數據存儲 數據計算 2018年5月16日,集算器(倉庫版)攜帶多項黑科技正式發布。在發布之前的應用驗證中,倉庫版就已經用實力贏得了用戶的好評。北京銀行用戶在評價倉庫版時表示:在數據分析實踐中,高並發訪問、大數據量計算造成的系統響應時間過長的問題,始終沒有得到很好的解決。集算

初體驗

強制 控制臺輸出 有意 包含 根據 main函數 有意義 自動 強烈 1、從經典的Hello, world! 開始先看圖(1):圖(1)新建p1程序文件,在A1格子中輸入=output(“Hello, world!”)。點擊圖(1)中紅圈圈住的三角按鈕,執行p1的代碼,就可

資料分析用它就夠了 | 37 個場景你要用

【報表查詢效能】 1. 資料量大或併發多導致的查詢效能低下,BI 介面拖拽響應很慢 通過集算器編寫更為簡單高效的演算法加速計算程序,提升查詢效能 採用集算器可控儲存和索引機制,為 BI(CUBE)提供高速的資料儲存 2.T+0 實時全量查詢報表涉及資料量大,影響生產系統執

巧用資料

看如下圖所示報表:   這個報表從樣式來看,可以看作是一個簡單的網格式報表,統計著各種收支金額,但因為取數複雜,每個格子的資料都來自一個複雜的 sql 資料集,並且涉及十幾個,乃至幾十個資料集,藍色 區域裡每個格子都需要從各自的資料集裡檢索遍歷,查詢與左表頭關聯的記錄。為了方便體

批量隨機鍵值查詢測試

【摘要】 當資料量巨大時,使用大批量隨機鍵值集獲取對應記錄集合,不僅僅考驗資料庫軟體本身,更在於程式設計師對資料的理解!如何在硬體資源有限的情況下將效能發揮到極致?點選:批量隨機鍵值查詢測試,來乾學院一探究竟! 複製摘要 本次測試主要針對集算器組表索引實現的批量鍵值取數效能,並與 Oracl

資料分析之37 個場景使用到

可閱讀原文:http://c.raqsoft.com.cn/article/1534732238335?r=alice 慢 1、清單式大報表難以及時呈現,採用資料庫分頁方式翻頁效率很差 集算器將計算和呈現做成兩個非同步執行緒,取數執行緒發出 SQL 將資料快取到本地,然後交給呈現執

JDBC

集算器JDBC 類似一個不完整的資料庫JDBC驅動,它不帶物理表,可將集算器視為只有儲存過程的資料庫(較強的計算能力,較弱的儲存機制)。與使用資料庫JDBC非常類似,可以像呼叫儲存過程一樣呼叫集算器

Oracle與對比測試報告

1.測試目的 針對相同的硬體環境和計算任務,對比Oracle和集算器的效能差異,為客戶選型提供參考。 2.硬體環境 裝置數量:1臺 CPU:16核 Intel(R) Xeon(R) CPU E5620  @ 2.40GHz 記憶體:20G 3.軟體環境 作業系統:CentOS6.4 64位 JDK:1.6

處理兩個序表資料交叉

需求: 集算器指令碼能否把兩個序表的值交叉放,存為一個序表?比如    左右分別是查出的兩個序表,想合併成   分析與實現: 從結果看,要求兩個序表或結果集按照隔行交叉處理,直接的方式就會想到for迴圈。不過集算器有豐富的封裝函式(遍歷),實際可以用一個單元格代替用for

Hive Impala效能對比測試報告(上)

目的   對比Hive、集算器、Impala這三種大資料解決方案在分組彙總和關聯計算時的效能差異。 硬體環境   PC數量:4   CPU:Intel Core i5 2500(4核)   RAM:16G   HDD:2T/7200rpm   Ethern

如何將第一個sql語句中的結果作為第二個sql的引數值

集算器裡面如何將第一個sql執行的結果作為第二個資料集的引數值去過濾第二個資料集的資料呢?例如  我的第一個query()  裡面的結果是多條資料。然後將其中一個欄位的結果 作為 第二個資料集的引數去過濾資料。  在報表5 裡面ds2 資料集的引數 可以寫動態引數。表示式寫

生成動態列結果

  表1(tb1)中部分源資料如下:   Prjno      Subtask   Ddate      Num   P9996     P9996-sub002 2015-01-01     123   P9996     P9996-sub002 2015-0

SVM:利用SVM實現手寫圖片識別(數據50000張圖片)—Jason niu

圖片 clas 識別 fit ati ade loader test part import mnist_loader # Third-party libraries from sklearn import svm def svm_baseline():

高可用haproxy調度後端服務實現動靜分離群架構

eal 文件配置 instance killall col .html 相同 virtual 關閉 項目要求: (1) 動靜分離部署wordpress,動靜都要能實現負載均衡,要註意會話的問題; (2) 設計拓撲; (3) haproxy的設計要求: (a) stats p

網絡分流|網絡分流|高速骨幹網流量采與分流實現方案

P20 process 園區網 bps 通過 嵌入 預處理 國內 sha 網絡分流器|高速骨幹網流量采集與分流實現方案 1 流量采集|網絡分流器 所謂流量采集,就是將網絡流量通過物理層、數據鏈路層的信號解析和解幀,實現IP原始報文的獲取。骨幹網流量采集系統是一種

網絡分流|高速骨幹網流量采與分流實現方案

獨立 結果 10g 結構圖 獲取 圖片 難度 表的管理 端口 網絡分流器|高速骨幹網流量采集與分流實現方案網絡分流器 1 流量采集|網絡分流器 所謂流量采集,就是將網絡流量通過物理層、數據鏈路層的信號解析和解幀,實現IP原始報文的獲取。骨幹網流量采集系統是一種對骨幹網進行流