iT邦幫忙

2024 iThome 鐵人賽

DAY 19
0
AI/ ML & Data

粗暴的資料處理 DuckDB系列 第 19

Day19 -- DuckDB Style SQL (13) ?

  • 分享至 

  • xImage
  •  

今天介紹一個 DuckDB 在 1.1.0 版本推出的 *COLUMNS Unpacked Columns function, 前幾天我們已經看到了 COLUMNS 的方便之處, *COLUMNS 要做的事情是讓水平運算這件事更方便。

看例子會比較快

這是普通的 columns function

SELECT coalesce(COLUMNS(['a', 'b', 'c'])) AS result
FROM (SELECT NULL a, 42 b, true c);

代表的是

SELECT coalesce(a), coalesce(b) , coalesce(c) AS result
FROM (SELECT NULL a, 42 b, true c);
result result result
NULL 42 true

這是 *columns function

SELECT coalesce(*COLUMNS(['a', 'b', 'c'])) AS result
FROM (SELECT NULL a, 42 b, true c);

代表的是

SELECT coalesce(a,b,c) AS result
FROM (SELECT NULL a, 42 b, true c);
result
42

主要區別:

COLUMNS 會為每一 col 單獨應用 coalesce 函數。
*COLUMNS 會將所有 col 作為參數傳遞給單個 coalesce 函數。

我個人也還在探索除了 coalesce 以外的用法,但是體感這會一個水平運算的好工具。

我真的不知道 Postgres 要怎麼辦到這件事情, chatGPT 跟 Claude 一直給我牛頭不對馬嘴的答案 lol


上一篇
Day18 -- DuckDB Style SQL (12) ?
下一篇
Day20 -- DuckDB Style SQL (14) ?
系列文
粗暴的資料處理 DuckDB30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言