Partager via


Clause TABLESAMPLE

S’applique à : case marquée oui Databricks SQL case marquée oui Databricks Runtime

L’instruction TABLESAMPLE permet d’échantillonner la relation.

Syntaxe

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

Paramètres

  • percentage PERCENT

    Constante INTEGER ou DECIMAL percentage comprise entre 0 et 100 spécifiant le pourcentage des lignes de la table à échantillonner.

  • num_rows ROWS

    Expression num_rows INTEGER positive constante spécifiant un nombre absolu de lignes parmi toutes les lignes à échantillonner.

  • BUCKET fraction OUT OF total

    Constante INTEGER fraction spécifiant la partie de la constante INTEGER total à échantillonner.

  • REPEATABLE ( seed )

    S’applique à : coche marquée oui Databricks SQL coche marquée oui Databricks Runtime 11.3 LTS et versions ultérieures

    Constante INTEGER seed positive facultative, utilisée pour toujours produire le même jeu de lignes. Utilisez cette clause lorsque vous souhaitez réémettre la requête plusieurs fois, et que vous attendez le même jeu de lignes échantillonnées.

Notes

  • TABLESAMPLE retourne le nombre approximatif de lignes ou la fraction demandée.
  • Utilisez toujours TABLESAMPLE (percent PERCENT) si la randomisation est importante. TABLESAMPLE (num_rows ROWS) n’est pas un échantillon aléatoire simple. Il est implémenté à l’aide de LIMIT.

Exemples

> 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