Partitioning
什麼是“葉子表達式”?
什麼是“葉子表達式”?
分區子句表達式在以下方面受到限制:
….
- 您可以在分區子句表達式中指定葉表達式、函式和運算符。
- 分區子句中的所有葉表達式必須是表的常量或列。
來源https://my.vertica.com/docs/6.1.x/HTML/index.htm#18125.htm
我很確定葉子表達式的意思是“a?b:c”。來自條件的離散值。
但基本上總體資訊是說您需要避免空值。他們不能在 null 上進行分區。
傳統上,葉子和非葉子是指 btree 中的節點。但是,我認為這與這裡的上下文沒有任何關係。
它在分區語句的上下文中使用。9.0 的文件稍微清晰一些
PARTITION BY
表達式可以指定葉表達式、函式和運算符。在我看來,葉子表達式是一種可以簡化為值的東西。葉和非葉的概念很可能是從過程程式中藉來的。這是一本關於現代 X86 彙編語言程式的書中的範例:32 位、64 位、SSE 和 AVX
葉函式是這樣的函式:
- 不要呼叫任何其他函式。
- 不要修改 RSP 寄存器的內容。
- 不要分配任何本地堆棧空間。
- 不要修改任何非易失性通用或 XMM 寄存器。
- 不要使用異常處理。
- X86-64 彙編語言葉函式更容易編碼,但它們只適用於相對簡單的計算任務。
我們可以通過記下這一點來驗證文件的上下文
強烈建議您使用 Vertica 內置的 HASH 功能,該功能可以在整個集群中均勻分佈數據,並有助於優化查詢執行。
在HASH 函式的文件中,他們說,
所有葉表達式必須是對
CREATE PROJECTION
’SELECT
列表中的列的常量或列引用。所以本質上,雜湊可以在非聚合函式、運算符或葉表達式(常量或列)上工作。這意味著葉表達式是純函式(沒有副作用)的子集,並且可以簡單地折疊成文字。