Referensi Bahasa Kueri (Versi 0.7)

Google Visualization API Query Language memungkinkan Anda melakukan berbagai manipulasi data dengan kueri ke sumber data.

Daftar Isi

Pengantar

Biasanya, visualisasi mengharapkan data dalam beberapa bentuk tertentu. Misalnya, diagram pai mengharapkan data berupa dua kolom: label teks dan nilai numerik. Data dalam sumber data mungkin tidak sama persis dengan struktur ini. Misalnya, sumber data mungkin memiliki lebih dari dua kolom, atau urutan kolom mungkin tidak cocok dengan urutan yang diharapkan oleh diagram lingkaran.

Bahasa kueri menyediakan kemampuan untuk mengirim permintaan manipulasi dan pemformatan data ke sumber data, serta memastikan struktur dan konten data yang ditampilkan cocok dengan struktur yang diharapkan.

{i>Syntax<i} bahasa kueri mirip dengan SQL. Developer yang terbiasa dengan SQL harus dapat dengan cepat mempelajari dan menggunakan bahasa kueri ini. Ada banyak tutorial SQL yang tersedia di Web. Ada beberapa perbedaan antara bahasa kueri ini dan SQL yang dijelaskan di bagian syntax.

Perhatikan bahwa sumber data tidak diperlukan untuk mengimplementasikan bahasa kueri, atau jika memerlukannya, untuk mengimplementasikan semua fitur bahasa tersebut. Kecuali Anda memiliki alasan untuk meyakini sebaliknya, Anda tidak boleh bergantung pada sumber data untuk menerapkan semua fitur bahasa ini.

Menggunakan Bahasa Kueri

Anda dapat melampirkan string kueri ke permintaan sumber data melalui dua cara: dengan menetapkan string kueri dari dalam kode JavaScript, atau dengan menetapkan string kueri sebagai parameter dalam URL sumber data. Jika permintaan Anda tidak menyertakan string kueri, perilaku default untuk sumber data adalah menampilkan semua baris dan kolom menggunakan urutan dan pemformatan baris/kolom default. Anda dapat mengubahnya dengan menyertakan string kueri dalam permintaan Anda ke sumber data.

Menetapkan Kueri dari JavaScript

Untuk menetapkan string kueri dari dalam kode JavaScript, panggil metode setQuery class google.visualization.Query.

var query = new google.visualization.Query(DATA_SOURCE_URL);
query.setQuery('select dept, sum(salary) group by dept');
query.send(handleQueryResponse);

Menetapkan Kueri di URL Sumber Data

String kueri dapat ditambahkan ke URL sumber data menggunakan parameter tq. Menetapkan kueri di parameter URL, bukan di JavaScript, memungkinkan Anda dengan mudah menggunakan visualisasi yang ditulis oleh developer lain, dan tetap dapat menyesuaikan kueri.

String kueri harus dienkode dengan benar sebagai parameter URL. Anda dapat mengenkode URL menggunakan fungsi encodeURIComponent JavaScript, atau mengenkodenya secara manual, menggunakan alat encoding di akhir bagian ini.

Contoh:

Pertimbangkan string kueri berikut untuk Google Spreadsheet. (Perhatikan bahwa ID kolom dalam spreadsheet selalu berupa huruf; teks judul kolom yang ditampilkan di spreadsheet yang dipublikasikan adalah label, bukan ID. Anda harus menggunakan ID, bukan label, dalam string kueri Anda.)

select A, sum(B) group by A

Jika dienkode, kueri ini menjadi:

select%20A%2C%20sum(B)%20group%20by%20A

Asumsikan bahwa ini adalah URL {i>spreadsheet <i}Anda:

https://docs.google.com/a/google.com/spreadsheets/d/1r8_mfnZAvTFmT02JHi1XgOwn_-sLCR9XgmR8wEQ4uW4

Tambahkan /gviz/tq?tq=YOUR_QUERY_STRING ke URL spreadsheet untuk mendapatkan string kueri akhir Anda:

https://docs.google.com/a/google.com/spreadsheets/d/1r8_mfnZAvTFmT02JHi1XgOwn_-sLCR9XgmR8wEQ4uW4/gviz/tq?tq=select%A%2C%20sum(B)%20group%20by%20A

Gunakan alat di bawah ini untuk mengenkode atau mendekode string kueri:

Catatan: Untuk mengakses data spreadsheet pribadi, Anda harus meneruskan kredensial otorisasi eksplisit menggunakan OAuth. Lihat bagian Google Spreadsheets: Otorisasi untuk detail selengkapnya.

Sintaksis Bahasa

Ringkasan

Sintaksis Bahasa Kueri Google Visualization API dirancang agar serupa dengan sintaksis SQL. Namun, ini adalah subset dari SQL, dengan beberapa fiturnya sendiri yang perlu Anda pelajari. Jika Anda sudah terbiasa dengan SQL, seharusnya tidak terlalu sulit untuk dipelajari.

Tabel Data

Dokumen ini menggunakan istilah tabel data untuk merujuk pada kumpulan hasil kueri. Sebuah tabel data terdiri dari baris dan kolom. Setiap kolom dalam tabel data memiliki properti berikut:

  • ID (atau ID kolom). Digunakan untuk mereferensikan kolom dalam kueri. Perhatikan bahwa Anda tidak boleh mencoba mereferensikan kolom berdasarkan label dalam kueri, hanya dengan ID. Tips: Cobalah untuk tidak menggunakan ID yang menyertakan spasi; spasi sulit dikelola dan dapat menyebabkan Anda membuat kesalahan kecil, tetapi sulit ditemukan, dalam coding. Selain itu, ID yang menyertakan spasi harus diapit oleh tanda petik terbalik.
  • Label. string yang biasanya ditampilkan kepada pengguna akhir. Misalnya sebagai legenda dalam bagan pai, atau {i>header <i}kolom dalam tabel.
  • Jenis data. Jenis data yang didukung adalah string, number, boolean, date, datetime, dan timeofday. Semua nilai kolom akan memiliki jenis data yang cocok dengan jenis kolom, atau nilai null. Jenis ini mirip, tetapi tidak sama, dengan jenis JavaScript. yang dijelaskan di bagian Literal pada halaman ini.
  • Pola pemformatan. Sumber data dapat menentukan pola pemformatan untuk sebagian atau semua kolomnya. Anda dapat mengganti pola ini dengan menyertakan klausa format.

Tabel yang digunakan dalam semua contoh:

Sepanjang bagian ini, semua contoh kueri mengacu pada tabel berikut. Header kolom adalah ID kolom.

nama
string
departemen
string
lunchTime
timeofday
Gaji
number
hireDate
date
usia
number
isSenior
boolean
seniorityStartTime
datetime
JohnEng12:00:00
1.000
2005-03-1935true02-12-2007 15:56:00
DaffaEng12:00:00
500
2006-04-1927falsenull
SantiEng13:00:00
600
2005-10-1030falsenull
BeniPenjualan12:00:00
400
2002-10-1032true09-03-2005 12:30:00
DanaPenjualan12:00:00
350
2004-09-0825falsenull
MikoPemasaran13:00:00
800
2005-01-1024true30-12-2007 14:40:00

Klausul Bahasa

{i>Syntax<i} bahasa kueri terdiri dari klausa-klausa berikut. Setiap klausa dimulai dengan satu atau dua kata kunci. Semua klausa bersifat opsional. Klausul dipisahkan oleh spasi. Urutan klausul harus sebagai berikut:

Klausul Penggunaan
select Memilih kolom yang akan ditampilkan, dan urutannya. Jika dihilangkan, semua kolom tabel akan ditampilkan, dalam urutan defaultnya.
where Hanya menampilkan baris yang cocok dengan kondisi. Jika dihilangkan, semua baris akan ditampilkan.
group by Menggabungkan nilai di seluruh baris.
pivot Mengubah nilai yang berbeda dalam kolom menjadi kolom baru.
order by Mengurutkan baris menurut nilai dalam kolom.
limit Membatasi jumlah baris yang ditampilkan.
offset Melewati sejumlah baris pertama tertentu.
label Menetapkan label kolom.
format Memformat nilai dalam kolom tertentu menggunakan pola pemformatan yang diberikan.
options Menetapkan opsi tambahan.
from Klausa from telah dihapus dari bahasa.

 

Pilih

Klausa select digunakan untuk menentukan kolom yang akan ditampilkan dan urutannya. Jika klausa ini tidak ditentukan, atau jika select * digunakan, semua kolom tabel sumber data akan ditampilkan, dalam urutan aslinya. Kolom dirujuk oleh ID (bukan oleh label). Misalnya, di Google Spreadsheet, ID kolom adalah huruf kolom satu atau dua karakter (A, B, C, ...).

Item dalam klausa select dapat berupa ID kolom, atau output fungsi agregasi, fungsi skalar, atau operator.

Contoh:

select *
select dept, salary
select max(salary)

Pada contoh berikut, tanda kutip terbalik digunakan untuk mereferensikan ID kolom yang berisi spasi (alamat email) atau yang merupakan kata yang dicadangkan (tanggal):

select `email address`, name, `date`

Menjalankan kueri berikut pada contoh tabel:

select lunchTime, name

Menampilkan respons berikut:

lunchTime name
12:00:00John
12:00:00Daffa
13:00:00Santi
12:00:00Beni
12:00:00Dana
13:00:00Miko

Lokasi

Klausa where digunakan untuk hanya menampilkan baris yang cocok dengan kondisi tertentu.

Operator perbandingan sederhana adalah <=, <, >, >=, =, !=, <>. Kedua operator perbandingan != <> berarti tidak sama. String dibandingkan dengan nilai leksikografis. Perhatikan bahwa kesetaraan ditunjukkan oleh =, bukan == seperti di sebagian besar bahasa komputer. Membandingkan dengan null dilakukan menggunakan is null atau is not null.

Anda dapat menggabungkan beberapa kondisi menggunakan operator logika and, or, dan not. Tanda kurung dapat digunakan untuk menentukan prioritas eksplisit.

Klausa {i>where<i} juga mendukung beberapa operator perbandingan {i>string<i} yang lebih kompleks. Operator ini mengambil dua string sebagai argumen; argumen non-string apa pun (misalnya tanggal atau angka) akan dikonversi menjadi string sebelum dibandingkan. Pencocokan string peka huruf besar/kecil (Anda dapat menggunakan fungsi skalar upper() atau lower() untuk mengatasinya).

  • contains - Kecocokan substring. keseluruhan contains bagian bernilai benar jika bagian berada di mana saja dalam seluruh. Contoh: where name contains 'John' cocok dengan 'John', 'John Adams', 'Long John Silver', tetapi bukan 'john adams'.
  • starts with - Pencocokan awalan. value starts with awalan bernilai benar jika awalan berada di awal value. Contoh: where dept starts with 'engineering' cocok dengan 'engineering' dan 'engineering manager'. where dept starts with 'e' cocok dengan 'engineering', 'eng', dan 'e'.
  • ends with - Pencocokan akhiran. value ends with akhiran bernilai true jika suffix berada di akhir value. Contoh: where role ends with 'y' cocok dengan 'cowboy', 'boy', dan 'y'.
  • matches - Pencocokan ekspresi reguler (preg). haystack matches needle bernilai benar jika ekspresi reguler di needle cocok dengan haystack. Contoh: where country matches '.*ia' cocok dengan India dan Nigeria, tetapi tidak dengan Indiana. Perlu diketahui bahwa ini bukan penelusuran global, sehingga where country matches 'an' tidak akan cocok dengan 'Kanada'.
  • like - Penelusuran teks yang mendukung dua karakter pengganti: %, yang mencocokkan nol atau beberapa karakter dari jenis apa pun, dan _ (garis bawah), yang cocok dengan satu karakter apa pun. Hal ini mirip dengan operator SQL LIKE. Contoh: where name like fre% cocok dengan 'fre', 'fred', dan 'freddy'.

Contoh:

where salary >= 600
where dept != 'Eng' and date '2005-01-21' < hireDate
where (dept<>'Eng' and isSenior=true) or (dept='Sales') or seniorityStartTime is null

Menjalankan kueri berikut pada contoh tabel:

select name where salary > 700

Menampilkan respons berikut:

name
John
Miko

Kelompokkan Menurut

Klausa group by digunakan untuk menggabungkan nilai di seluruh baris. Satu baris dibuat untuk setiap kombinasi nilai yang berbeda dalam klausa kelompokkan menurut. Data diurutkan secara otomatis berdasarkan kolom pengelompokan, kecuali jika ditentukan lain oleh klausa order by.

Catatan: Jika Anda menggunakan klausa group by, setiap kolom yang tercantum dalam klausa select harus dicantumkan dalam klausa group by, atau digabungkan oleh fungsi agregasi.

Contoh:

select dept, max(salary) group by dept

Menjalankan kueri berikut pada contoh tabel:

select lunchTime, avg(salary), count(age) group by isSenior,lunchTime

Menampilkan respons berikut:

lunchTime gaji rata-rata jumlah usia
12:00:00 425 2
13:00:00 600 1
12:00:00 700 2
13:00:00 800 1

Pivot

Klausa pivot digunakan untuk mengubah nilai yang berbeda dalam kolom menjadi kolom baru. Misalnya, melakukan pivot berdasarkan kolom 'year' akan menghasilkan tabel dengan kolom untuk setiap tahun yang berbeda, yang muncul di tabel asli. Tindakan ini dapat berguna, misalnya, jika visualisasi diagram garis menggambar setiap kolom sebagai garis terpisah. Jika Anda ingin menggambar garis terpisah untuk setiap tahun, dan 'year' adalah salah satu kolom tabel asli, maka pilihan yang baik adalah menggunakan operasi pivot untuk melakukan transformasi data yang diperlukan.

Catatan: Jika Anda menggunakan klausa pivot, setiap kolom yang tercantum dalam klausa select harus dicantumkan dalam klausa group by, atau digabungkan oleh fungsi agregasi

Karena beberapa baris dapat berisi nilai yang sama untuk kolom pivot, pivot menyiratkan agregasi. Perhatikan bahwa saat menggunakan pivot tanpa menggunakan group by, tabel hasil akan berisi tepat satu baris. Misalnya, menjalankan kueri berikut pada contoh tabel:

select sum(salary) pivot dept

Menampilkan respons berikut:

Jumlah gaji bahasa Inggris Jumlah gaji pemasaran Jumlah gaji penjualan
2100 800 750

Ini karena 2100 adalah jumlah gaji untuk departemen Eng, 800 untuk departemen Pemasaran, dsb.

Menggunakan pivot bersama dengan group by dapat lebih berguna, karena akan membuat tabel dengan setiap sel berisi hasil agregasi untuk baris yang relevan dan kolom yang relevan. Misalnya, jalankan kueri berikut pada contoh tabel:

select dept, sum(salary)
  group by dept
  pivot lunchTime

Menampilkan respons berikut:

departemen 12:00:00 jumlah gaji 13:00:00 jumlah gaji
Eng 1500 600
Pemasaran null 800
Penjualan 750 null

Anda juga dapat "membalikkan" tabel ini, mengalihkan kolom dan baris, dengan beralih antara kolom pivot dan kolom group by. Jalankan kueri berikut pada contoh tabel:

select lunchTime, sum(salary)
  group by lunchTime
  pivot dept

Menampilkan respons berikut:

lunchTime Jumlah gaji bahasa Inggris Jumlah gaji pemasaran Jumlah gaji penjualan
12:00:00 1500 null 750
13:00:00 600 800 null

Anda juga dapat menggunakan lebih dari satu kolom dalam klausa pivot. Dalam kasus semacam ini, kolom tabel respons terdiri dari semua kombinasi nilai unik dalam kolom yang ada di tabel asli. Misalnya, jalankan kueri berikut pada contoh tabel:

select sum(salary)
  pivot dept, lunchTime

Menampilkan respons berikut:

Eng,12:00:00 jumlah gaji Eng,13:00:00 jumlah gaji Pemasaran,13:00:00 jumlah gaji Penjualan,jumlah gaji 12:00:00
1500 600 800 750

Perhatikan bahwa hanya kombinasi yang muncul dalam tabel asli yang akan diberi kolom dalam tabel respons. Itulah sebabnya tidak ada kolom untuk Marketing,12:00:00 atau untuk Sales,13:00:00.

Anda juga dapat menggunakan lebih dari satu agregasi. Misalnya, menjalankan kueri berikut pada contoh tabel:

select sum(salary), max(lunchTime)
  pivot dept

Menampilkan respons berikut:

Jumlah gaji bahasa Inggris Jumlah gaji pemasaran Jumlah gaji penjualan max-lunchTime bahasa Inggris Max-lunchTime pemasaran Penjualan max-lunchTime
2100 800 750 13:00:00 13:00:00 12:00:00

Anda dapat menggabungkan beberapa agregasi dalam klausa select, beberapa kolom dalam klausa group by, dan beberapa kolom dalam klausa pivot. Secara internal, agregasi dilakukan oleh penyambungan kolom dalam klausa group by dan pivot.

Kolom yang ditentukan dalam klausa pivot mungkin tidak muncul dalam klausa select, group by, atau order by. Jika pivot digunakan, klausa order by tidak boleh berisi kolom agregasi. Alasannya adalah karena setiap agregasi yang ditentukan dalam klausa select, banyak kolom yang akan dihasilkan dalam tabel hasil. Namun, Anda dapat memformat kolom agregasi jika pivot digunakan. Hasil dari format seperti itu adalah semua kolom baru yang relevan dengan agregasi tertentu, yang dihasilkan oleh operasi pivot, diformat menurut pola yang ditentukan. Pada contoh di atas, menambahkan format sum(salary) "some_format_string" akan memengaruhi kolom berikut: Eng sum-salary, Marketing sum-salary, dan Sales sum-salary.

Anda dapat memberi label pada kolom agregasi. Jika tidak ada label yang ditentukan dalam klausa label, label kolom yang dihasilkan sebagai hasil pivot akan terdiri dari daftar nilai dalam kolom pivot, jenis agregasi (min, maks, sum, ...), dan label kolom yang diagregasi. Misalnya "Eng,12:00:00 sum Gaji". Jika hanya satu agregasi yang ditentukan dalam klausa select, bagian agregasi akan dihapus dari label, dan hanya daftar nilai dalam kolom pivot yang akan disimpan. Misalnya "Eng,12:00:00". Jika klausa label menentukan label untuk kolom agregasi, maka label yang diminta akan ditambahkan ke daftar nilai, baik saat hanya ada satu agregasi dalam klausa select, maupun saat ada lebih dari satu. Misalnya, label sum(salary) "sumsal" akan menghasilkan label kolom "Eng,12:00:00 sumsal", "Eng,13:00:00 sumsal", dll.

Pesan Menurut

Klausa order by digunakan untuk mengurutkan baris menurut nilai dalam kolom yang ditentukan.

Item dalam klausa order by dapat berupa ID kolom, atau output fungsi agregasi, fungsi skalar, atau operator.

Contoh:

order by dept, salary desc
select dept, max(salary) group by dept order by max(salary)

Batas

Klausa limit digunakan untuk membatasi jumlah baris yang ditampilkan.

Contoh:

limit 100

Offset

Klausa offset digunakan untuk melewati sejumlah baris pertama tertentu. Jika klausa limit digunakan, offset akan diterapkan terlebih dahulu: misalnya, limit 15 offset 30 menampilkan baris 31 sampai 45.

Contoh:

offset 10
limit 30 offset 210

Label

Klausa label digunakan untuk menetapkan label pada satu atau beberapa kolom. Perhatikan bahwa Anda tidak dapat menggunakan nilai label sebagai pengganti ID dalam kueri.

Item dalam klausa label dapat berupa ID kolom, atau output fungsi agregasi, fungsi skalar, atau operator.

Sintaksis:

label column_id label_string [,column_id label_string]
column_id
ID kolom yang diberi label.
label_string
Label yang akan ditetapkan ke kolom tersebut. Banyak visualisasi menggunakan label kolom sebagai teks untuk ditampilkan kepada pengguna akhir, seperti label legenda dalam diagram lingkaran. Label adalah literal string, dan ikuti aturan sintaksis tersebut.

Contoh:

Contoh berikut menetapkan label untuk kolom dept ke "Departemen", label untuk kolom nama ke "Nama Karyawan", dan label untuk kolom lokasi ke "Lokasi Karyawan":

label dept 'Department', name "Employee Name", location 'Employee Location'

Format

Klausa format digunakan untuk menentukan nilai terformat untuk sel dalam satu atau beberapa kolom. Data yang ditampilkan harus berisi nilai sebenarnya dan nilai berformat untuk setiap sel dalam kolom yang diformat. Banyak visualisasi menggunakan nilai yang tidak terformat untuk penghitungan, tetapi menggunakan nilai terformat untuk ditampilkan. Pola yang Anda tentukan dalam klausa ini biasanya ditampilkan dalam properti pattern di kolom terkait.

Sintaksis Pola:

number, date, timeofday, datetime
Pola tanggal dan angka yang ditentukan oleh ICU.
boolean
Pola berupa string dalam format 'value-if-true:value-if-false'.

Contoh:

format salary '#,##0.00', hireDate 'dd-MMM-yyyy', isSenior 'Yes!:Not yet'

 

Opsi

Klausa options digunakan untuk mengontrol opsi tambahan untuk eksekusi kueri. Kemungkinan kata kunci yang dapat mengikuti klausa options adalah:

  • no_format Menghapus nilai terformat dari hasil, dan hanya membiarkan nilai pokoknya. Dapat digunakan saat visualisasi tertentu tidak menggunakan nilai terformat untuk mengurangi ukuran respons.
  • no_values Menghapus nilai dasar dari hasil, dan hanya membiarkan nilai yang diformat. Dapat digunakan saat visualisasi tertentu hanya menggunakan nilai yang diformat untuk mengurangi ukuran respons.

Fungsi Manipulasi Data

Ada beberapa jenis operator dan fungsi yang memungkinkan Anda memanipulasi atau menggabungkan data dalam satu kolom, atau membandingkan atau menggabungkan data di seluruh kolom. Contohnya mencakup sum() (untuk menambahkan semua nilai dalam kolom), max (untuk menemukan nilai terbesar di kolom), dan + (untuk menjumlahkan nilai dua kolom dalam baris yang sama).

Beberapa fungsi dapat muncul dalam klausa apa pun; beberapa fungsi dapat muncul dalam subset klausa. Hal ini didokumentasikan di bawah.

Contoh:

Dengan tabel ini... Jika kita menerapkan kueri ini... Kita mendapatkan hasil ini.
Name Salary Pajak StartDate
Sharon 1.000 100 1/1/2009
Avital 2.000 200 21/1/2008
Moran 3.000 300 12/2/2008
select upper(name), year(startDate)
Name tahun(TanggalMulai)
AVITAL 2008
MORAN 2008
SHARON 2009

 

Fungsi manipulasi data berikut ditentukan oleh bahasa kueri Google Visualization API:

 

Fungsi Agregasi

Fungsi agregasi diteruskan satu ID kolom, dan melakukan tindakan pada semua nilai dalam setiap grup (grup ditentukan oleh klausa group by atau pivot, atau semua baris jika klausa tersebut tidak digunakan).

Contoh:

select max(salary)               // Returns a table with one column and one row.
select max(salary) group by dept // Returns a table with the max salary for each dept column value.
select max(salary) pivot dept    // Returns a one-row table with a column for each dept,
                                 //   and the max salary for that department.

Fungsi agregasi dapat digunakan dalam klausa select, order by, label, format. Karakter ini tidak boleh muncul dalam klausa where, group by, pivot, limit, offset, atau options.

Berikut adalah fungsi agregasi yang didukung:

Name Deskripsi Jenis Kolom yang Didukung Jenis Nilai yang Ditampilkan
avg() Menampilkan nilai rata-rata dari semua nilai di kolom untuk grup. number number
count() Menampilkan jumlah elemen di kolom yang ditentukan untuk sebuah grup. Sel null tidak dihitung. Jenis apa saja number
max() Menampilkan nilai maksimum di kolom untuk grup. Tanggal dibandingkan dengan tanggal yang lebih kecil, string dibandingkan menurut abjad, dengan kepekaan huruf besar/kecil. Jenis apa saja Jenis yang sama dengan kolom
min() Menampilkan nilai minimum di kolom untuk grup. Tanggal dibandingkan dengan tanggal yang lebih kecil, string dibandingkan menurut abjad, dengan kepekaan huruf besar/kecil Jenis apa saja Jenis yang sama dengan kolom
sum() Menampilkan jumlah semua nilai di kolom untuk grup. number number

Catatan: Fungsi agregasi hanya dapat mengambil ID kolom sebagai argumen:

max(startDate)                      // OK
min(firstScore) + min(secondScore)  // OK
max(year(startDate))                // INVALID. max requires column ID
sum(salary + perks)                 // INVALID. sum requires column ID.

Fungsi Skalar

Fungsi skalar beroperasi pada nol atau beberapa parameter untuk menghasilkan nilai lain. Fungsi skalar dapat meneruskan ekspresi apa pun yang dievaluasi ke parameter jenis yang sesuai. Perhatikan bahwa jenis ini adalah jenis yang ditentukan di bagian Literal dalam dokumen ini, yang mungkin sedikit berbeda dari objek JavaScript yang memiliki nama serupa.

Perhatikan bahwa nama kolom akan diubah dengan menggabungkannya dengan fungsi skalar.

Fungsi skalar dapat menggunakan apa pun sebagai parameter yang dievaluasi menjadi satu nilai:

year(max(startDate))
datediff(now(), todate(1234567890000))

Fungsi skalar dapat digunakan dalam salah satu klausa berikut: select, where, group by, pivot, order by, label,, dan format.

Name
year()

Menampilkan nilai tahun dari nilai tanggal atau datetime. Misalnya: year(date "2009-02-05") menampilkan 2009.

Parameter: Satu parameter jenis date atau datetime
Jenis Pengembalian: number
month()

Menampilkan nilai bulan berbasis nol dari nilai tanggal atau datetime. Misalnya: month(date "2009-02-05") menampilkan 1. Catatan: bulan berbasis 0, sehingga fungsi menampilkan 0 untuk Januari, 1 untuk Februari, dst.

Parameter: Satu parameter jenis date atau datetime
Jenis Pengembalian: number
day()

Menampilkan hari dalam sebulan dari nilai date atau datetime. Misalnya: day(date "2009-02-05") menampilkan 5.

Parameter: Satu parameter jenis date atau datetime
Jenis Pengembalian: number
hour()

Menampilkan nilai jam dari nilai datetime atau timeofday. Misalnya: hour(timeofday "12:03:17") menampilkan 12.

Parameter: Satu parameter jenis datetime atau timeofday
Jenis Pengembalian: number
minute()

Menampilkan nilai menit dari nilai datetime atau timeofday. Misalnya: minute(timeofday "12:03:17") menampilkan 3.

Parameter: Satu parameter jenis datetime atau timeofday
Jenis Pengembalian: number
second()

Menampilkan nilai kedua dari nilai datetime atau timeofday. Misalnya: second(timeofday "12:03:17") menampilkan 17.

Parameter: Satu parameter jenis datetime atau timeofday
Jenis Pengembalian: number
millisecond()

Menampilkan bagian milidetik dari nilai datetime atau timeofday. Misalnya: millisecond(timeofday "12:03:17.123") menampilkan 123.

Parameter: Satu parameter jenis datetime atau timeofday
Jenis Pengembalian: number
quarter()

Menampilkan kuartal dari nilai date atau datetime. Misalnya: quarter(date "2009-02-05") menampilkan 1. Perhatikan bahwa kuartal berbasis 1 sehingga fungsi menampilkan 1 untuk kuartal pertama, 2 untuk kuartal kedua, dst.

Parameter: Satu parameter jenis date atau datetime
Jenis Pengembalian: number
dayOfWeek()

Menampilkan hari dari nilai date atau datetime. Misalnya: dayOfWeek(date "2009-02-26") menampilkan 5. Perhatikan bahwa hari berbasis 1, sehingga fungsi menampilkan 1 untuk hari Minggu, 2 untuk hari Senin, dst.

Parameter: Satu parameter jenis date atau datetime
Jenis Pengembalian: number
now()

Menampilkan nilai datetime yang mewakili datetime saat ini dalam zona waktu GMT.

Parameter: Tidak ada
Jenis Pengembalian: datetime
dateDiff()

Menampilkan perbedaan hari antara dua nilai date atau datetime. Catatan: Hanya bagian date dari nilai yang digunakan dalam penghitungan sehingga fungsi selalu menampilkan nilai bilangan bulat. Misalnya: dateDiff(date "2008-03-13", date "2008-02-12") menampilkan 29; dateDiff(date "2009-02-13", date "2009-03-13") menampilkan -29. Nilai waktu terpotong sebelum perbandingan.

Parameter: Dua parameter dari jenis date atau datetime (masing-masing dapat berupa salah satunya)
Jenis Pengembalian: number
toDate()

Mengubah nilai yang diberikan menjadi nilai date.

  • Dengan mempertimbangkan date, kueri akan menampilkan nilai yang sama.
  • Dengan mempertimbangkan datetime, metode ini akan menampilkan bagian date. Misalnya: toDate(dateTime "2009-01-01 12:00:00") menampilkan "2009-01-01".
  • Dengan mempertimbangkan number N, metode ini menampilkan date N milidetik setelah Epoch. Epoch didefinisikan sebagai 1 Januari 1970, 00.00.00 GMT. Misalnya: toDate(1234567890000) menampilkan "2009-02-13".
Parameter: Satu parameter dari jenis date, datetime, atau number
Jenis Pengembalian: date
upper()

Menampilkan string yang diberikan dalam huruf besar. Misalnya: upper("foo") menampilkan "FOO".

Parameter: Satu parameter jenis string
Jenis Pengembalian: string
lower()

Menampilkan string yang diberikan dalam huruf kecil. Misalnya: lower("Bar") menampilkan "bar".

Parameter: Satu parameter jenis string
Jenis Pengembalian: string

Operator Aritmatika

Anda dapat menggunakan operator aritmatika untuk melakukan operasi matematis pada apa pun yang dievaluasi ke angka tunggal (yaitu, output dari fungsi agregat, operator, atau konstanta).

Contoh:

select empSalary - empTax
select 2 * (max(empSalary) / max(empTax))

Operator berikut ditentukan:

Name Deskripsi Parameter Jenis Nilai yang Ditampilkan
+ Menampilkan jumlah dua nilai number. Dua number number
- Menampilkan perbedaan antara dua nilai number. Dua number number
* Menampilkan produk dari dua number. Dua number number
/ Menampilkan hasil bagi dua number. Pembagian dengan nol akan menghasilkan nilai nol. Dua number number

Elemen Bahasa

Literal

Literal adalah nilai yang digunakan untuk perbandingan atau tugas. Literal dapat berupa string, angka, nilai boolean, atau berbagai jenis tanggal/waktu. Berikut beberapa contoh literal yang digunakan dalam sintaksis kueri:

where startDate < date "2008-03-18"  // date "2008-03-18" is a date literal
limit 30                             // 30 is a numeric literal
format salary '#,##0.00', isSenior 'not yet:of course!'  // '#,##0.00' and 'not yet:of course!' are both string literals

Berikut adalah format untuk setiap jenis literal:

string
Literal string harus diapit dalam tanda kutip tunggal atau ganda. Contoh: "fourteen" 'hello world' "It's raining".
number
Literal numerik ditentukan dalam notasi desimal. Contoh: 3  3.0  3.14  -71  -7.2  .6
boolean
Literal Boolean adalah true atau false.
date
Gunakan kata kunci date diikuti dengan literal string dalam format yyyy-MM-dd. Contoh: date "2008-03-18".
timeofday
Gunakan kata kunci timeofday diikuti dengan literal string dalam format HH:mm:ss[.SSS] Contoh: timeofday "12:30:45".
datetime
Tanggal dan waktu, menggunakan kata kunci datetime atau kata kunci timestamp diikuti dengan literal string dalam format yyyy-MM-dd HH:mm:ss[.sss]. Contoh: datetime '2008-03-18 12:30:34.123'

ID

ID (atau ID) adalah string teks yang mengidentifikasi kolom.

Penting: Jika ID Anda

  • Memiliki ruang,
  • Merupakan kata yang sudah dicadangkan,
  • Berisi apa pun selain karakter alfanumerik atau garis bawah ([a-zA-Z0-9_]), atau
  • Diawali dengan digit

tanda kutip tersebut harus diapit oleh tanda kutip terbalik (bukan tanda kutip tunggal).

Jika tidak, ID Anda tidak perlu diberi tanda kutip. (Perhatikan bahwa tidak semua kata kunci yang didefinisikan oleh sintaksis tersebut merupakan kata yang dicadangkan; jadi, misalnya, Anda dapat menggunakan "maks" sebagai ID, tanpa harus mengutip kembali.)

Contoh: col1   employee_table   `start date`   `7 days traffic`   `select`

Sebaiknya jangan memilih ID yang memerlukan tanda kutip kembali, karena dapat terjadi lupa penggunaan tanda kutip terbalik, atau tidak sengaja menggunakan 'tanda kutip tunggal', bukan `tanda kutip balik`. Ini merupakan kesalahan umum, dan sering kali sulit di-debug.

Sensitivitas Kasus

ID dan literal string peka huruf besar/kecil. Semua elemen bahasa lainnya tidak peka huruf besar/kecil.

Kata yang Dicadangkan

Kata yang sudah dicadangkan untuk sistem berikut harus dikutip kembali jika digunakan sebagai ID:

and
asc
by
date
datetime
desc
false
format
group
label
limit
not
offset
options
or
order
pivot
select
timeofday
timestamp
true
where