次の方法で共有


histogram_numeric 集計関数

適用対象:check marked yes Databricks SQL Databricks Runtime 10,2 以降

expr ビンを使用して numBins のヒストグラムを計算します。

構文

histogram_numeric ( [ALL | DISTINCT ] expr, numBins ) [ FILTER ( WHERE cond ) ]

引数

  • expr: 関数によってヒストグラムを使用して計算する数値 TIMESTAMPDATE、または INTERVAL 式。
  • numBins: ヒストグラム評価のビンの数を指定する、1 より大きい必要がある INTEGER リテラル。
  • cond: 集計のために行をフィルター処理する BOOLEAN 式 (省略可能)。

返品

戻り値は、ヒストグラムのビンの中心を表すフィールド ARRAYSTRUCTS を持つ xy です。x の型は expr の型と同じで、y の型は DOUBLE です。 numBins の値を大きくすると、ヒストグラムの近似値が設定し直され、細かく調整されます。 ただし、外れ値に関する不自然な結果が発生する可能性があります。 通常、ヒストグラムには 20 から 40 のビンが有効ですが、スキューが発生したか小さいデータセットでは、より多くのビンが必要になる場合があります。この関数では、均一でないビン幅を持つヒストグラムが作成されることに注意してください。 ヒストグラムの平均二乗誤差の点では保証されませんが、実際には他のコンピューティング パッケージによって生成されるヒストグラムに相当します。

DISTINCT を指定すると、関数は exprvaluesの一意の set でのみ動作します。

> SELECT histogram_numeric(col, 5)
    FROM VALUES (0), (1), (2), (10) AS tab(col);
 [{"x":0.0,"y":1.0},{"x":1.0,"y":1.0},{"x":2.0,"y":1.0},{"x":10.0,"y":1.0}]

> SELECT histogram_numeric(col, 5)
    FROM VALUES (0L), (1L), (2L), (10L) AS tab(col);
 [{"x":0,"y":1.0},{"x":1,"y":1.0},{"x":2,"y":1.0},{"x":10,"y":1.0}]

> SELECT histogram_numeric(col, 5)
    FROM VALUES (0F), (1F), (2F), (10F) AS tab(col);
 [{"x":0.0,"y":1.0},{"x":1.0,"y":1.0},{"x":2.0,"y":1.0},{"x":10.0,"y":1.0}]

> SELECT histogram_numeric(col, 5)
    FROM VALUES (0D), (1D), (2D), (10D) AS tab(col);
 [{"x":0.0,"y":1.0},{"x":1.0,"y":1.0},{"x":2.0,"y":1.0},{"x":10.0,"y":1.0}]

> SELECT histogram_numeric(col, 5)
    FROM VALUES (INTERVAL 0 YEAR), (INTERVAL 1 YEAR), (INTERVAL 2 YEAR),
    (INTERVAL 3 YEAR) AS tab(col);
 [{"x":0-0,"y":1.0},{"x":1-0,"y":1.0},{"x":2-0,"y":1.0},{"x":3-0,"y":1.0}]

> SELECT histogram_numeric(col, 5)
    FROM VALUES (INTERVAL 0 DAY), (INTERVAL 1 DAY), (INTERVAL 2 DAY),
    (INTERVAL 3 DAY) AS tab(col);
  [{"x":0 00:00:00.000000000,"y":1.0},{"x":1 00:00:00.000000000,"y":1.0},{"x":2 00:00:00.000000000,"y":1.0},{"x":3 00:00:00.000000000,"y":1.0}]

> SELECT histogram_numeric(col, 5)
    FROM VALUES (TIMESTAMP '2020-01-01'), (TIMESTAMP'2020-02-01'),
    (TIMESTAMP'2020-03-01'), (TIMESTAMP'2020-10-01') AS tab(col)
  [{"x":2020-01-01 00:00:00,"y":1.0},{"x":2020-02-01 00:00:00,"y":1.0},{"x":2020-03-01 00:00:00,"y":1.0},{"x":2020-10-01 00:00:00,"y":1.0}]