「葉っぱ表現」とは?
パーティション句の式は、次の方法で制限されます。
..。
- リーフを指定パーティション句式の式、関数、および演算子を使用できます。
- パーティション句のすべてリーフ式は、テーブルの定数または列である必要があります。
ソース https://my.vertica.com/docs/6.1.x/HTML/index.htm#18125.htm
葉っぱの表現は「a?b:c」のような意味だと思います。条件付きの離散値。
しかし、基本的に全体的なメッセージは、null値を避ける必要があるということです。 nullでパーティション化することはできません。
従来、リーフと非リーフはBツリー内のノードを指します。しかし、それはここでの文脈とは何の関係もないと思います。
これは、パーティションステートメントのコンテキストで使用されています。 9.0のドキュメントはもう少し明確です
PARTITION BY
式は、リーフ式、関数、および演算子を指定できます。
私の意見では、葉の表現は値に減らすことができるものです。リーフと非リーフの概念は、手続き型プログラミングから借用されている可能性があります。これは、 最新のX86アセンブリ言語プログラミングに関する本の例です:32ビット、64ビット、SSE、およびAVX
リーフ関数は次のような関数です。
- 他の関数を呼び出さないでください。
- RSPレジスタの内容を変更しないでください。
- ローカルスタックスペースを割り当てないでください。
- 不揮発性の汎用レジスタまたはXMMレジスタは変更しないでください。
- 例外処理は使用しないでください。
- X86-64アセンブリ言語のリーフ関数はコーディングが簡単ですが、比較的単純な計算タスクにのみ適しています。
これに注意することで、ドキュメントのコンテキストを確認できます
Verticaの組み込みHASH関数を使用することを強くお勧めします。この関数は、データをクラスター全体に均等に分散し、最適なクエリ実行を容易にします。
HASH関数に関するドキュメントでは、 と彼らは言います、
すべてのリーフ式は、定数または
CREATE PROJECTION
のSELECT
リスト内の列への列参照である必要があります。
したがって、基本的にハッシュは、非集計関数、演算子、またはリーフ式(定数または列)に対して機能します。つまり、リーフ式は純粋な(副作用がない)関数のサブセットであり、単純にリテラルに折りたたまれます。