referensi tabel
Berlaku untuk: Databricks SQL Databricks Runtime
Referensi tabel adalah tabel hasil menengah dalam SQL. Ini dapat berasal dari operator lain, seperti fungsi, gabungan atau subkueri, mereferensikan tabel dasar secara langsung, atau dibangun sebagai tabel sebaris.
Sintaks
table_reference
{ table_name [ TABLESAMPLE clause ] [ table_alias ] |
{ STREAM table_name [ table_alias ] | STREAM ( table_name ) [ table_alias ] } |
view_name [ table_alias ] |
JOIN clause |
PIVOT clause |
UNPIVOT clause |
[ STREAM ] table_valued_function [ table_alias ] |
[ LATERAL ] table_valued_function [ table_alias ] |
VALUES clause |
[ LATERAL ] ( query ) [ TABLESAMPLE clause ] [ table_alias ] }
Parameter
-
Mengidentifikasi tabel yang dapat berisi spesifikasi sementara. Lihat Bekerja dengan riwayat tabel Delta Lake untuk detailnya.
Jika tabel tidak dapat ditemukan, Azure Databricks menimbulkan kesalahan TABLE_OR_VIEW_NOT_FOUND .
Lihat Resolusi kolom, bidang, parameter, dan variabel untuk informasi selengkapnya tentang resolusi nama.
-
Mengidentifikasi tampilan atau ekspresi tabel umum (CTE). Jika tampilan tidak dapat ditemukan, Azure Databricks menimbulkan kesalahan TABLE_OR_VIEW_NOT_FOUND .
Lihat Resolusi kolom, bidang, parameter, dan variabel untuk informasi selengkapnya tentang resolusi nama.
KALI
Mengembalikan tabel atau fungsi bernilai tabel sebagai sumber streaming. Tabel tidak dapat disediakan dengan spesifikasi temporal saat digunakan dengan
STREAM
kata kunci. Sumber streaming paling umum digunakan dalam definisi tabel streaming.-
Menggabungkan dua atau beberapa relasi menggunakan gabung.
-
Berlaku untuk: Databricks SQL Databricks Runtime 12.2 LTS ke atas.
Digunakan untuk perspektif data; Anda bisa mendapatkan nilai agregat berdasarkan nilai kolom tertentu.
Sebelum Databricks Runtime 12.0 PIVOT dibatasi untuk SELECT mengikuti
FROM
klausa. -
Berlaku untuk: Databricks SQL Databricks Runtime 12.2 LTS ke atas.
Digunakan untuk perspektif data; Anda dapat membagi beberapa grup kolom menjadi baris.
[LATERAL] table_valued_function_invocation
Memanggil fungsi bernilai tabel. Untuk merujuk ke kolom yang diekspos oleh
table_reference
sebelumnya dalam klausulFROM
yang sama, Anda harus menentukanLATERAL
.-
Menentukan tabel sebaris.
[LATERAL] ( kueri )
Menghitung referensi tabel menggunakan kueri. Kueri yang diawali oleh
LATERAL
dapat mereferensikan kolom yang diekspos olehtable_reference
sebelumnya dalam klausulFROM
yang sama. Konstruksi semacam itu disebut kueri yang berkorelasi atau dependen.-
Secara opsional, kurangi ukuran hasil yang ditetapkan dengan hanya mengambil sampel sebagian kecil dari baris.
-
Secara opsional menetapkan label untuk
table_reference
. Jikatable_alias
menyertakancolumn_identifier
jumlahnya harus cocok dengan jumlah kolom ditable_reference
.
Pilih pada tabel Delta
Selain opsi standar SELECT
, tabel Delta mendukung opsi perjalanan waktu yang dijelaskan di bagian ini. Untuk detailnya, lihat Bekerja dengan riwayat tabel Delta Lake.
AS OF
sintaks
table_identifier TIMESTAMP AS OF timestamp_expression
table_identifier VERSION AS OF version
timestamp_expression
dapat berupa salah satu dari:'2018-10-18T22:15:12.013Z'
, yaitu, string yang dapat ditransmisikan ke stempel waktucast('2018-10-18 13:36:32 CEST' as timestamp)
'2018-10-18'
, yaitu, string tanggalcurrent_timestamp() - interval 12 hours
date_sub(current_date(), 1)
- Ekspresi lain yang sedang atau dapat ditransmisikan ke stempel waktu
version
adalah nilai panjang yang dapat diperoleh dari outputDESCRIBE HISTORY table_spec
.
Baik timestamp_expression
maupun version
tidak boleh berupa subkueri.
Contoh
> SELECT * FROM events TIMESTAMP AS OF '2018-10-18T22:15:12.013Z'
> SELECT * FROM events VERSION AS OF 123
@
sintaks
Gunakan @
sintaks untuk menentukan stempel waktu atau versi. Stempel waktu harus dalam format yyyyMMddHHmmssSSS
. Anda dapat menentukan versi setelah @
dengan menambahkan v
ke versi tersebut. Misalnya, untuk meminta versi 123
untuk tabel events
, tentukan events@v123
.
Contoh
> SELECT * FROM events@20190101000000000
> SELECT * FROM events@v123
Contoh
-- select all referencable columns from all tables
> SELECT * FROM VALUES(1, 2) AS t1(c1, c2), VALUES(3, 4) AS t2(c3, c4);
1 2 3 4
-- select all referencable columns from one table
> SELECT t2.* FROM VALUES(1, 2) AS t1(c1, c2), VALUES(3, 4) AS t2(c3, c4);
3 4
-- select all referencable columns from all tables except t2.c4
> SELECT * EXCEPT(c4) FROM VALUES(1, 2) AS t1(c1, c2), VALUES(3, 4) AS t2(c3, c4);
1 2 3
-- select all referencable columns from a table, except a nested field.
> SELECT * EXCEPT(c2.b) FROM VALUES(1, named_struct('a', 2, 'b', 3)) AS t(c1, c2);
1 { "a" : 2 }
-- Removing all fields results in an empty struct
> SELECT * EXCEPT(c2.b, c2.a) FROM VALUES(1, named_struct('a', 2, 'b', 3)) AS t(c1, c2);
1 { }
-- Overlapping names result in an error
> SELECT * EXCEPT(c2, c2.a) FROM VALUES(1, named_struct('a', 2, 'b', 3)) AS t(c1, c2);
Error: EXCEPT_OVERLAPPING_COLUMNS