Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Operator dan fungsi
Dengan Amazon Redshift, Anda dapat melakukan analisis lanjutan pada kumpulan data besar menggunakan SUPER data menggunakan operator dan fungsi. Operator dan fungsi untuk SUPER data adalah SQL konstruksi 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 SUPER data di Amazon Redshift untuk membuka potensi penuh data semi-terstruktur Anda.
Operator aritmatika
SUPERnilai mendukung semua operator aritmatika dasar +, -, *,/,% menggunakan pengetikan dinamis. Jenis operasi yang dihasilkan tetap sebagaiSUPER. Untuk semua operator, kecuali operator biner +, operan input harus berupa angka. Jika tidak, Amazon Redshift mengembalikan null. 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 input 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 SUPER nilainya 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 memiliki skala SUPER 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:
FLOOR. Untuk informasi selengkapnya, lihat Fungsi FLOOR.
CEILdanCEILING. Untuk informasi selengkapnya, lihat Fungsi CEILING (atau CEIL).
ROUND. Untuk informasi selengkapnya, lihat Fungsi ROUND.
TRUNC. Untuk informasi selengkapnya, lihat Fungsi TRUNC.
ABS. 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
ABSFungsi mempertahankan skala desimal input sementara,. FLOOR CEIL ROUNDMenghilangkan 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 SUPER array dari nilai dalam tipe data Amazon Redshift menggunakan fungsi, termasuk ARRAY nilai lainnya. SUPER 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 SUBARRAY fungsi 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 level array ke dalam satu array 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. LENGTHFungsi GET ARRAY _ _ mengembalikan panjang SUPER array yang 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)