Klausul TABLESAMPLE

Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime

Pernyataan TABLESAMPLE digunakan untuk mengambil sampel relasi.

Sintaks

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

Parameter

  • percentage PERCENT

    Konstanta BILANGAN BULAT atau DESIMAL percentage antara 0 dan 100 yang menentukan persentase baris tabel yang akan diambil sampelnya.

  • num_rows ROWS

    Ekspresi BILANGAN BULAT positif konstan num_rows yang menetapkan jumlah absolut baris dari semua baris yang akan diambil sampelnya.

  • BUCKET fraction OUT OF total

    Konstanta BILANGAN BULAT fraction yang menentukan bagian dari konstanta BILANGAN BULAT total untuk dijadikan sampel.

  • REPEATABLE ( seed )

    Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime 11.3 LTS ke atas

    Konstanta BILANGAN BULAT positif opsional seed, digunakan untuk selalu menghasilkan set baris yang sama. Gunakan klausul ini saat Anda ingin menerbitkan ulang kueri beberapa kali, dan Anda mengharapkan set baris sampel yang sama.

Catatan

  • TABLESAMPLE mengembalikan perkiraan jumlah baris atau pecahan yang diminta.
  • Selalu gunakan TABLESAMPLE (percent PERCENT) jika keacakan itu penting. TABLESAMPLE (num_rows ROWS) bukan sampel acak sederhana tetapi diimplementasikan menggunakan LIMIT.

Contoh

> 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