Condividi tramite


clausola TABLESAMPLE

Si applica a:segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime

L'istruzione TABLESAMPLE viene usata per campionare la relazione.

Sintassi

TABLESAMPLE ( { percentage PERCENT ) |
                num_rows ROWS |
                BUCKET fraction OUT OF total } )
            [ REPEATABLE ( seed ) ]

Parameters

  • percentage PERCENT

    Costante INTEGER o DECIMAL percentage compresa tra 0 e 100 che specifica la percentuale delle righe del tableda campionare.

  • num_rows ROWS

    Espressione INTEGER num_rows positiva costante che specifica un numero assoluto di righe di tutte le righe da campionare.

  • BUCKET fraction OUT OF total

    Costante fraction INTEGER che specifica la parte della costante total INTEGER da campionare.

  • REPEATABLE ( seed )

    Si applica a:segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime 11.3 LTS e versioni successive

    Costante INTEGER positiva facoltativa seed, usata per produrre sempre la stessa set di righe. Utilizzare questa clausola quando si desidera rieseguire più volte la query, aspettandosi di ottenere lo stesso set di righe campionate.

Nota

  • TABLESAMPLE restituisce il numero approssimativo di righe o frazioni richieste.
  • Usare TABLESAMPLE (percent PERCENT) sempre se la casualità è importante. TABLESAMPLE (num_rows ROWS) non è un semplice esempio casuale, ma viene invece implementato usando LIMIT.

Esempi

> CREATE TEMPORARY VIEW test(id, name) AS
  VALUES ( 1, 'Lisa'),
         ( 2, 'Mary'),
         ( 3, 'Evan'),
         ( 4, 'Fred'),
         ( 5, 'Alex'),
         ( 6, 'Mark'),
         ( 7, 'Lily'),
         ( 8, 'Lucy'),
         ( 9, 'Eric'),
         (10, 'Adam');
> SELECT * FROM test;
  5 Alex
  8 Lucy
  2 Mary
  4 Fred
  1 Lisa
  9 Eric
 10 Adam
  6 Mark
  7 Lily
  3 Evan

> SELECT * FROM test TABLESAMPLE (30 PERCENT) REPEATABLE (123);
  1     Lisa
  2     Mary
  3     Evan
  5     Alex
  8     Lucy

> SELECT * FROM test TABLESAMPLE (5 ROWS);
  5 Alex
  8 Lucy
  2 Mary
  4 Fred
  1 Lisa

> SELECT * FROM test TABLESAMPLE (BUCKET 4 OUT OF 10);
  8 Lucy
  2 Mary
  9 Eric
  6 Mark