web-dev-qa-db-ja.com

「葉っぱ表現」とは?

「葉っぱ表現」とは?

パーティション句の式は、次の方法で制限されます。

..。

  • リーフを指定パーティション句式の式、関数、および演算子を使用できます。
  • パーティション句のすべてリーフ式は、テーブルの定数または列である必要があります。

ソース https://my.vertica.com/docs/6.1.x/HTML/index.htm#18125.htm

2
davidjhp

葉っぱの表現は「a?b:c」のような意味だと思います。条件付きの離散値。

しかし、基本的に全体的なメッセージは、null値を避ける必要があるということです。 nullでパーティション化することはできません。

1
geoffrobinson

従来、リーフと非リーフはBツリー内のノードを指します。しかし、それはここでの文脈とは何の関係もないと思います。

これは、パーティションステートメントのコンテキストで使用されています。 9.0のドキュメントはもう少し明確です

PARTITION BY式は、リーフ式、関数、および演算子を指定できます。

私の意見では、葉の表現は値に減らすことができるものです。リーフと非リーフの概念は、手続き型プログラミングから借用されている可能性があります。これは、 最新のX86アセンブリ言語プログラミングに関する本の例です:32ビット、64ビット、SSE、およびAVX

リーフ関数は次のような関数です。

  • 他の関数を呼び出さないでください。
  • RSPレジスタの内容を変更しないでください。
  • ローカルスタックスペースを割り当てないでください。
  • 不揮発性の汎用レジスタまたはXMMレジスタは変更しないでください。
  • 例外処理は使用しないでください。
  • X86-64アセンブリ言語のリーフ関数はコーディングが簡単ですが、比較的単純な計算タスクにのみ適しています。

これに注意することで、ドキュメントのコンテキストを確認できます

Verticaの組み込みHASH関数を使用することを強くお勧めします。この関数は、データをクラスター全体に均等に分散し、最適なクエリ実行を容易にします。

HASH関数に関するドキュメントでは、 と彼らは言います、

すべてのリーフ式は、定数またはCREATE PROJECTIONSELECTリスト内の列への列参照である必要があります。

したがって、基本的にハッシュは、非集計関数、演算子、またはリーフ式(定数または列)に対して機能します。つまり、リーフ式は純粋な(副作用がない)関数のサブセットであり、単純にリテラルに折りたたまれます。

0
Evan Carroll