Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Dengan Amazon Redshift, Anda dapat melakukan analisis lanjutan pada kumpulan data besar menggunakan data SUPER menggunakan operator dan fungsi. Operator dan fungsi untuk data SUPER adalah konstruksi SQL yang memungkinkan analisis kompleks dan manipulasi data semi-terstruktur yang disimpan dalam tabel Amazon Redshift.
Bagian berikut akan mencakup sintaks, contoh, dan praktik terbaik untuk menggunakan operator dan fungsi untuk data SUPER di Amazon Redshift untuk membuka potensi penuh data semi-terstruktur Anda.
Operator aritmatika
Nilai SUPER mendukung semua operator aritmatika dasar +, -, *,/,% menggunakan pengetikan dinamis. Jenis operasi yang dihasilkan tetap sebagai SUPER. Untuk semua operator, kecuali untuk operator biner +, operan input harus berupa angka. Jika tidak, Amazon Redshift mengembalikan nol. Perbedaan antara nilai desimal dan floating-point dipertahankan saat Amazon Redshift menjalankan operator ini dan tipe dinamis tidak berubah. Namun, skala desimal berubah saat Anda menggunakan perkalian dan pembagian. Limpahan aritmatika masih menyebabkan kesalahan kueri, mereka tidak diubah menjadi null. Operator biner+melakukan penambahan jika inputnya adalah angka atau penggabungan jika inputnya adalah string. Jika satu operan adalah string dan operan lainnya adalah angka, hasilnya adalah nol. Operator awalan unary + dan - mengembalikan null jika nilai SUPER bukan angka seperti yang ditunjukkan pada contoh berikut:
SELECT (c_orders[0]. o_orderkey + 0.5) * c_orders[0]. o_orderkey / 10 AS math FROM customer_orders_lineitem;
math
----------------------------
1757958232200.1500
(1 row)
Pengetikan dinamis memungkinkan nilai desimal di SUPER memiliki skala yang berbeda. Amazon Redshift memperlakukan nilai desimal seolah-olah mereka adalah tipe statis yang berbeda dan memungkinkan semua operasi matematika. Amazon Redshift menghitung skala yang dihasilkan secara dinamis berdasarkan skala operan. Jika salah satu operan adalah angka floating-point, maka Amazon Redshift mempromosikan operan lainnya ke nomor floating-point dan menghasilkan hasilnya sebagai angka floating-point.
Fungsi aritmatika
Amazon Redshift mendukung fungsi aritmatika berikut untuk kolom SUPER. Mereka mengembalikan null jika inputnya bukan angka:
LANTAI. Untuk informasi selengkapnya, lihat Fungsi FLOOR.
CEIL dan LANGIT-LANGIT. Untuk informasi selengkapnya, lihat Fungsi CEILING (atau CEIL).
BULAT. Untuk informasi selengkapnya, lihat Fungsi ROUND.
BATANG. Untuk informasi selengkapnya, lihat Fungsi TRUNC.
PERUT. Untuk informasi selengkapnya, lihat Fungsi ABS.
Contoh berikut menggunakan fungsi aritmatika untuk query data:
SELECT x, FLOOR(x), CEIL(x), ROUND(x)
FROM (
SELECT (c_orders[0]. o_orderkey + 0.5) * c_orders[0].o_orderkey / 10 AS x
FROM customer_orders_lineitem
);
x | floor | ceil | round
--------------------+---------------+---------------+---------------
1389636795898.0500 | 1389636795898 | 1389636795899 | 1389636795898
Fungsi ABS mempertahankan skala desimal input sementara FLOOR, CEIL. ROUND menghilangkan skala desimal input.
Fungsi array
Amazon Redshift mendukung komposisi array berikut dan fungsi utilitas array array, array_concat, subarray, array_flatten, get_array_length, dan split_to_array.
Anda dapat membuat array SUPER dari nilai dalam tipe data Amazon Redshift menggunakan fungsi ARRAY, termasuk nilai SUPER lainnya. Contoh berikut menggunakan fungsi variadik ARRAY:
SELECT ARRAY(1, c.c_custkey, NULL, c.c_name, 'abc') FROM customer_orders_lineitem c;
array
-------------------------------------------------------
[1,8401,null,""Customer#000008401"",""abc""]
[1,9452,null,""Customer#000009452"",""abc""]
[1,9451,null,""Customer#000009451"",""abc""]
[1,8251,null,""Customer#000008251"",""abc""]
[1,5851,null,""Customer#000005851"",""abc""]
(5 rows)
Contoh berikut menggunakan rangkaian array dengan fungsi ARRAY_CONCAT:
SELECT ARRAY_CONCAT(JSON_PARSE('[10001,10002]'),JSON_PARSE('[10003,10004]'));
array_concat
------------------------------------
[10001,10002,10003,10004]
(1 row)
Contoh berikut menggunakan manipulasi array dengan fungsi SUBARRAY yang mengembalikan subset dari array input.
SELECT SUBARRAY(ARRAY('a', 'b', 'c', 'd', 'e', 'f'), 2, 3);
subarray
---------------
["c","d","e"]
(1 row))
Contoh berikut menggabungkan beberapa tingkat array ke dalam array tunggal menggunakan ARRAY_FLATTEN:
SELECT x, ARRAY_FLATTEN(x) FROM (SELECT ARRAY(1, ARRAY(2, ARRAY(3, ARRAY()))) AS x);
x | array_flatten
----------------+---------------
[1,[2,[3,[]]]] | [1,2,3]
(1 row)
Fungsi array ARRAY_CONCAT dan ARRAY_FLATTEN menggunakan aturan pengetikan dinamis. Mereka mengembalikan null alih-alih kesalahan jika input bukan array. Fungsi GET_ARRAY_LENGTH mengembalikan panjang array SUPER diberikan objek atau jalur array.
SELECT c_name
FROM customer_orders_lineitem
WHERE GET_ARRAY_LENGTH(c_orders) = (
SELECT MAX(GET_ARRAY_LENGTH(c_orders))
FROM customer_orders_lineitem
);
Contoh berikut membagi string ke array string menggunakan SPLIT_TO_ARRAY. Fungsi ini menggunakan pembatas sebagai parameter opsional. Jika tidak ada pembatas yang tidak ada, maka defaultnya adalah koma.
SELECT SPLIT_TO_ARRAY('12|345|6789', '|');
split_to_array
---------------------
["12","345","6789"]
(1 row)