集計関数sum(x)、avg(x)、max(x)、min(x) は、xが空の場合、またはNULL値のみを含む場合はNULLを返します。KDBでNULLを返す集計関数の取得
KDBでは、sumとavgはゼロを返しますが、maxとminは無限大を返します。
(A)ヌルを外し、通常の
nsum:{[x] x: x where not null x; $[0=count x; 0N; sum x]}
として集計する前に結果が空であるかどうかを確認(:
は、私は2つのオプションが出ているnullを返すの所望の動作を取得するにはB)累積する前にヌルの各項目をチェックする新しい集計を作成する空のリストを確認する必要があることに注意してください。
nsum:{[z] $[0=count z; 0N; {[x;y] $[null x; y; null y; x; x+y]}/ z ]}
AまたはBよりも優れた(高速かつ/またはより便利な)方法がありますか?
方法(B)は方法(A)よりも優れていますか?
方法(A)は、任意の集約関数のために働く利点があります。 メソッド(B)は、 "average"に対して機能しません。これは、実行平均を生成するペアワイズ関数 が存在しないためです(すでに適用されている項目の数を知る必要があります)。
関連する質問:0= type first x
のように、空のリストが0=count x
より速くチェックされていますか?
感謝!