TABLESAMPLE-Klausel

Gilt für:durch Häkchen mit „Ja“ markiert Databricks SQL durch Häkchen mit „Ja“ markiert Databricks Runtime

Die TABLESAMPLE-Anweisung wird verwendet, um eine Stichprobe aus der Beziehung zu erstellen.

Syntax

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

Parameter

  • percentage PERCENT

    Eine INTEGER- oder DECIMAL-Konstante percentage zwischen 0 und 100, die angibt, welcher Prozentsatz der Zeilen der Tabelle als Stichprobe verwendet werden soll.

  • num_rows ROWS

    Ein konstanter positiver INTEGER-Ausdruck num_rows, der eine absolute Anzahl von Zeilen aus allen Zeilen der Stichprobe angibt.

  • BUCKET fraction OUT OF total

    Eine INTEGER-Konstante fraction, die den Teil der INTEGER-Konstante total für die Stichprobe angibt.

  • REPEATABLE ( seed )

    Gilt für:Häkchen Databricks SQL Häkchen Databricks Runtime 11.0 und höher

    Eine optionale positive INTEGER-Konstante seed, die verwendet wird, um immer die gleiche Anzahl von Zeilen zu erzeugen. Verwenden Sie diese Klausel, wenn Sie die Abfrage mehrmals wiederholen möchten und dieselbe Menge an Stichprobenzeilen erwarten.

Hinweis

  • TABLESAMPLE gibt die ungefähre Anzahl der angeforderten Zeilen oder des Bruchteils zurück.
  • Verwenden Sie immer TABLESAMPLE (percent PERCENT), wenn Zufallsergebnisse wichtig sind. TABLESAMPLE (num_rows ROWS) ist keine einfache Zufallsstichprobe, sondern wird stattdessen mit LIMIT implementiert.

Beispiele

> 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