Compartir a través de


Cláusula TABLESAMPLE

Se aplica a:casilla marcada como Sí Databricks SQL casilla marcada como Sí Databricks Runtime

La instrucción TABLESAMPLE se usa para muestrear la relación.

Sintaxis

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

Parámetros

  • percentage PERCENT

    Constante de tipo INTEGER o DECIMAL percentage entre 0 y 100 que especifica qué porcentaje de filas de la tabla se va a muestrear.

  • num_rows ROWS

    Expresión constante de tipo INTEGER num_rows positiva que especifica un número absoluto de filas de todas las filas que se van a muestrear.

  • BUCKET fraction OUT OF total

    Constante de tipo INTEGER fraction que especifica la parte de la constante total de tipo INTEGER que se va a muestrear.

  • REPEATABLE ( seed )

    Se aplica a: casilla marcada como sí Databricks SQL casilla marcada como Sí Databricks Runtime 11.3 LTS y versiones posteriores

    Constante INTEGER seed positiva opcional que se usa para generar siempre el mismo conjunto de filas. Use esta cláusula cuando quiera volver emitir la consulta varias veces y espere el mismo conjunto de filas muestreadas.

Nota:

  • TABLESAMPLE devuelve el número aproximado de filas o fracción solicitadas.
  • Use siempre TABLESAMPLE (percent PERCENT) si la aleatoriedad es importante. TABLESAMPLE (num_rows ROWS) no es una muestra aleatoria simple, sino que se implementa mediante LIMIT.

Ejemplos

> 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