Dela via


histogram_numeric mängdfunktion

Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime 10,2 och senare

Beräknar ett histogram för expr användning av numBins lagerplatser.

Syntax

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

Argument

  • expr: Ett numeriskt, TIMESTAMP, DATEeller INTERVAL uttryck som funktionen använder och beräknar histogrammet på.
  • numBins: En INTEGER literal som måste vara större än 1 och som anger antalet lagerplatser för histogramberäkningen.
  • cond: Ett valfritt BOOLEAN uttryck som filtrerar raderna för aggregering.

Returer

Returvärdet är ett ARRAY av STRUCTS med fält x och y representerar centrumen för histogrammets lagerplatser. Typen av x är samma som typen av expr, och typen av y är DOUBLE. Att öka värdet för numBins förfinar histogrammets uppskattning, vilket gör det finare kornigt. Det kan dock introducera artefakter kring extremvärden. Vanligtvis är 20–40 lagerplatser effektiva för histogram, men skeva eller mindre datamängder kan kräva fler lagerplatser. Observera att den här funktionen skapar ett histogram med icke-enhetliga intervallbredder. Det ger inga garantier när det gäller histogrammets medelvärde-kvadratfel, men är i praktiken jämförbart med de histogram som produceras av andra databehandlingspaket.

Om du anger DISTINCT fungerar funktionen endast på en unik uppsättning expr värden.

Exempel

> 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}]