Banyak pilihan pengolahan data dengan jumlah fitur yang sangat komplit - dari grafik
sampai machine learning.
Lebih cepat dipelajari dan dijalankan untuk mengolah data dibandingkan dengan
bahasa lain.
R bersifat gratis dan open source yang artinya, tidak perlu biaya lisensi yang biasanya
sangat mahal untuk software pengolahan data.
"Tidak ada asap tanpa api", demikian suatu peribahasa yang berarti tidak ada rumor tanpa ada
fakta yang menyertainya. Kepopuleran bahasa R disebabkan karena penggunaannya pada
berbagai perusahaan besar dunia. Perusahaan besar yang dimaksud diantaranya adalah AirBnB
untuk data science, Microsoft untuk menambahkan fungsionalitas di produk-produknya, Uber
untuk analisa statistik, Facebook untuk behavior analysis, dan lain-lain.
Comment pada R
Comment merupakan teks untuk menambahkan keterangan pada kode yang ditulis.
Penambahan keterangan ini akan mengingatkan kita kembali ketika membuka code tersebut di
suatu waktu di masa depan.
Comment tidak dianggap sebagai code yang dapat dieksekusi.
Penggunaan comment dalam bahasa R dapat dilakukan dengan mengawali suatu teks dengan
tanda '#'.
Vector pada R
Vector merupakan sebuah struktur data yang dapat menyimpan lebih dari satu data yang akan
digunakan di R.
Penggunaannya sangat sederhana, yaitu menggunakan fungsi c disertai data-data yang ingin
disimpan. Perhatikan potongan kode berikut
ini artinya kamu akan menyimpan nilai 5, 10 dan 20 dalam satu struktur yang disebut vektor.
Selanjutnya, jika kamu ingin menyimpan rangkaian angka yang terurut, misalkan angka 1 sampai
dengan 20, maka kamud dapat dapat mengetikkan potongan kode berikut
c(1:20)
Terlihat bahwa perintah c(3, 10, 15) ini membuat tiga urutan angka yaitu 3, 10 dan 15 yang
disimpan dan ditampilkan secara bersamaan dalam suatu vector.
c(1:5)
> c(1:5)
[1] 1 2 3 4 5
Terlihat bahwa perintah c(1:5) membuat vector dengan lima urutan angka yang dimulai dari 1
dan diakhiri nilai 5.
summary(c(1:5))
Jalankan dan kamu akan mendapatkan hasil pada Console seperti berikut. Kamu dapat men-
scroll ke bawah untuk mengetahui penjelasannya.
Ini artinya dari vector tersebut terdapat angka paling kecil 1 (Min), angka paling besar 5 (Max),
angka rata-rata 3 (Mean), dan angka tengah 3 (Median). Untuk 1st Qu dan 3rd Qu kita abaikan
dulu.
Bahasa SQL
SQL adalah akronim dari Bahasa Permintaan Terstruktur/Structured Query Language.
SQL digunakan untuk berkomunikasi dengan database hubungan. Pernyataan SQL
digunakan untuk melakukan tugas seperti memperbarui data dalam database, atau
mengambil data dari database. Sebagai contoh, pernyataan SQL SELECT digunakan
untuk kueri database dan mengembalikan satu set baris data. Beberapa sistem
manajemen database relasional umum yang menggunakan SQL meliputi Microsoft
SQL Server, MySQL, PostgreSQL, MariaDB, dan Oracle.
Ada standar bahasa SQL yang ditentukan oleh American National Standards Institute
(ANSI). Setiap vendor menambahkan variasi dan ekstensi mereka sendiri.
Transact-SQL
Pernyataan laporan SQL, seperti SELECT, INSERT, UPDATE, dan DELETE tersedia apa
pun sistem database hubungan yang sedang Anda kerjakan. Meskipun pernyataan
SQL ini adalah bagian dari standar SQL ANSI, banyak sistem manajemen database
yang juga memiliki ekstensinya sendiri. Ekstensi ini menyediakan fungsionalitas yang
tidak dicakup oleh standar SQL, dan mencakup area seperti manajemen keamanan
dan programabilitas. Sistem database Microsoft seperti SQL Server, Azure SQL
Database, Azure Synapse Analytics, dan lainnya menggunakan dialek SQL yang
disebut Transact-SQL, atau T-SQL. T-SQL mencakup ekstensi bahasa untuk menulis
prosedur dan fungsi tersimpan, yaitu kode aplikasi yang disimpan dalam database,
dan mengelola akun pengguna.
SQL mendukung beberapa sintaks prosedural, tetapi kueri data dengan SQL biasanya
mengikuti semantik deklaratif. Anda menggunakan SQL untuk menjelaskan hasil
yang Anda inginkan, dan prosesor kueri mesin database mengembangkan
rencana kueri untuk mengambilnya. Prosesor kueri menggunakan statistik tentang
data dalam database dan indeks yang ditentukan pada tabel untuk menghasilkan
rencana kueri yang baik.
Database relasional
SQL paling sering (meskipun tidak selalu) digunakan untuk kueri data
dalam databasehubungan. Sebuah database hubungan adalah salah satu data yang
telah diatur dalam beberapa tabel (secara teknis disebut sebagai hubungan), masing-
masing mewakili jenis entitas tertentu (seperti pelanggan, produk, atau pesanan
penjualan). Atribut entitas ini (misalnya, nama pelanggan, harga produk, atau tanggal
pesanan penjualan) ditetapkan sebagai kolom, atau atribut, dari tabel, dan setiap
baris dalam tabel mewakili instans dari jenis entitas (misalnya, pelanggan, produk,
atau pesanan penjualan tertentu).
Tabel dalam database terkait satu sama lain menggunakan kolom kunci yang secara
unik mengidentifikasi entitas tertentu yang diwakili. Kunci utama ditetapkan untuk
setiap tabel, dan referensi ke kunci ini ditetapkan sebagai kunci asing dalam tabel
terkait apa pun. Ini lebih mudah dipahami dengan melihat contoh:
Pelanggan
SalesOrderHeader
SalesOrderDetail
Produk
Saat Anda mempelajari lebih lanjut tentang kueri T-SQL, penting untuk selalu
memikirkan seluruh set, bukan anggota individual. Pola pikir ini akan lebih baik
membekali Anda untuk menulis kode berbasis set, daripada berpikir satu baris pada
satu waktu. Bekerja dengan set membutuhkan pemikiran dalam hal operasi yang
terjadi "sekaligus" alih-alih satu per satu.
Salah satu fitur penting yang perlu diperhatikan tentang teori set adalah bahwa tidak
ada spesifikasi mengenai pemesanan anggota set. Kurangnya pesanan ini berlaku
untuk tabel database hubungan. Tidak ada konsep baris pertama, baris kedua, atau
baristerakhir. Elemen dapat diakses (dan diambil) dalam pesanan apa pun. Jika Anda
perlu mengembalikan hasil dalam pemesanan tertentu, Anda harus menentukannya
secara eksplisit dengan menggunakan klausa ORDER BY di kueri SELECT Anda.
Dalam modul ini, kami akan fokus pada pernyataan DML. Pernyataan-pernyataan ini
biasanya digunakan oleh analis data untuk mengambil data sebagai laporan dan
analisis. Pernyataan DML juga digunakan oleh pengembang aplikasi untuk
melakukan operasi "CRUD" untuk membuat, membaca, memperbarui, atau
menghapus data aplikasi.
Transact-SQL atau T-SQL adalah dialek bahasa SQL standar ANSI yang digunakan
oleh produk dan layanan Microsoft SQL. Ini mirip dengan standar SQL. Sebagian
besar fokus kami adalah pada pernyataan SELECT, yang sejauh ini memiliki opsi dan
variasi terbanyak dari setiap pernyataan DML mana pun.
Mari kita mulai dengan melihat tingkat tinggi bagaimana pernyataan SELECT
diproses. Urutan penulisan pernyataan SELECT bukanlah urutan evaluasi dan
pemrosesannya oleh mesin database SQL Server.
FROM Sales.SalesOrder
GROUP BY OrderDate
Kueri terdiri dari pernyataan SELECT, yang terdiri dari beberapa klausul, yang masing-
masing menentukan operasi tertentu yang harus diterapkan ke data yang diambil.
Sebelum kita memeriksa urutan run-time operasi, mari kita lihat secara singkat apa
yang dilakukan kueri ini, meskipun detail dari berbagai klausa tidak akan dibahas
dalam modul ini.
Klausa FROM mengidentifikasi tabel mana yang merupakan sumber baris untuk kueri; dalam
hal ini adalah tabel Sales.SalesOrder: FROM Sales.SalesOrder
Klausa WHERE memfilter baris dari hasil, hanya menyimpan baris yang memenuhi kondisi
yang ditentukan; dalam hal ini, pesanan yang berstatus "dikirim": WHERE Status = 'Shipped'
SQLMenyalin
GROUP BY OrderDate
SQLMenyalin
HAVING COUNT(OrderID) > 1
Untuk tujuan pratinjau kueri ini, klausa terakhir adalah ORDER BY, yang mengurutkan
output ke dalam urutan menurun dari OrderDate:
SQLMenyalin
ORDER BY OrderDate DESC;
Sekarang, setelah Anda melihat apa yang dilakukan setiap klausa, mari kita lihat
urutan di mana SQL Server benar-benar mengevaluasinya:
Untuk menerapkan pemahaman ini ke kueri contoh kami, berikut adalah urutan logis
saat menjalankan pernyataan SELECT di atas:
SQLMenyalin
FROM Sales.SalesOrder
WHERE Status = 'Shipped'
GROUP BY OrderDate
HAVING COUNT(OrderID) > 1
SELECT OrderDate, COUNT(OrderID) AS Orders
ORDER BY OrderDate DESC;
Tidak semua klausul yang mungkin diperlukan dalam setiap pernyataan SELECT yang
Anda tulis. Satu-satunya klausa yang diperlukan adalah klausul SELECT, yang dapat
digunakan sendiri dalam beberapa kasus. Biasanya klausa FROM juga disertakan
untuk mengidentifikasi tabel yang sedang dikueri. Selain itu, T-SQL memiliki klausul
lain yang dapat ditambahkan.
Seperti yang Telah Anda lihat, Anda tidak menulis T-SQL dalam urutan yang sama di
mana mereka dievaluasi secara logis. Urutan evaluasi run-time menentukan data apa
yang tersedia untuk klausul yang mana, karena klausul hanya memiliki akses ke
informasi yang sudah tersedia dari klausul yang sudah diproses. Untuk alasan ini,
penting untuk memahami urutan pemrosesan logis yang sebenarnya saat menulis
kueri.
Bentuk paling sederhana dari klausa SELECT adalah penggunaan karakter asterisk (*)
untuk mengembalikan semua kolom. Ketika digunakan dalam kueri T-SQL, klausul
terebut disebut bintang. Meskipun SELECT * cocok untuk pengujian cepat, Anda
harus menghindari menggunakannya dalam pekerjaan produksi karena alasan
berikut:
Perubahan pada tabel yang menambahkan atau menyusun ulang kolom akan
tercermin dalam hasil kueri, yang dapat mengakibatkan output yang tidak
terduga untuk aplikasi atau laporan yang menggunakan kueri.
Mengembalikan data yang tidak diperlukan dapat memperlambat kueri Anda
dan menyebabkan masalah performa jika tabel sumber berisi sejumlah besar
baris.
SQLMenyalin
SELECT * FROM Production.Product;
Hasil dari kueri ini adalah rowset yang berisi semua kolom untuk semua baris tabel,
yang mungkin terlihat seperti ini:
ProductID
Nama
ProductNum
Warna
StandardCost
ListPrice
Ukuran
Berat
ProductCatID
680
FR-R92B-58
Hitam
1059.31
1431.5
58
1016.04
18
706
FR-R92R-58
Merah
1059.31
1431.5
58
1016.04
18
707
HL-U509-R
Merah
13.0863
34.99
35
708
HL-U509
Hitam
13.0863
34.99
35
...
...
...
...
...
...
...
...
...
SQLMenyalin
SELECT ProductID, Name, ListPrice, StandardCost
FROM Production.Product;
Kali ini, hasilnya hanya mencakup kolom yang ditentukan:
ProductID
Nama
ListPrice
StandardCost
680
1431.5
1059.31
706
1431.5
1059.31
707
34.99
13.0863
708
34.99
13.0863
...
...
...
...
Memilih ekspresi
Selain mengambil kolom yang disimpan dalam tabel yang ditentukan, klausa SELECT
dapat melakukan penghitungan dan manipulasi dengan cara menggunakan operator
untuk menggabungkan kolom dan nilai atau beberapa kolom. Hasil perhitungan atau
manipulasi harus merupakan hasil (skalar) bernilai tunggal yang akan muncul dalam
hasil sebagai kolom terpisah.
SQLMenyalin
SELECT ProductID,
Name + '(' + ProductNumber + ')',
ListPrice - StandardCost
FROM Production.Product;
ProductID
680
372.19
706
372.19
707
21.9037
708
21.9037
...
...
...
Ada beberapa hal menarik yang perlu diperhatikan dalam hasil ini:
Kolom yang dikembalikan oleh dua ekspresi tidak memiliki nama kolom.
Bergantung pada alat yang Anda gunakan untuk mengirimkan kueri Anda,
nama kolom yang hilang mungkin ditunjukkan oleh header kolom kosong,
indikator literal"tanpa nama kolom", atau nama default seperti kolom1. Kita
akan melihat cara menentukan alias untuk nama kolom dalam kueri berikutnya
di bagian ini.
Ekspresi pertama menggunakan + operator untuk menggabungkan nilai string
(berbasis karakter), sedangkan ekspresi kedua menggunakan - operator untuk
mengurangi satu nilai numerik dari yang lain. Saat digunakan dengan nilai
numerik, + operator melakukan penambahan. Dengan jelas, penting untuk
memahami tipe data kolom yang Anda sertakan dalam ekspresi. Kita akan
membahas tipe data di bagian berikutnya.
Misalnya, berikut ini kueri yang sama seperti sebelumnya, tetapi dengan alias yang
ditentukan untuk setiap kolom:
SQLMenyalin
SELECT ProductID AS ID,
Name + '(' + ProductNumber + ')' AS ProductName,
ListPrice - StandardCost AS Markup
FROM Production.Product;
ID
ProductName
Markup
680
372.19
706
372.19
707
21.9037
708
21.9037
...
...
...
Memformat kueri
Anda mungkin mencatat dari contoh di bagian ini, bahwa Anda dapat fleksibel
tentang cara memformat kode kueri Anda. Misalnya, Anda dapat menulis setiap
klausa (atau seluruh kueri) pada satu baris, atau memecahnya menjadi beberapa
baris. Di sebagian besar sistem database, kode ini tidak sensitif terhadap huruf
besar/kecil, dan beberapa elemen bahasa T-SQL bersifat opsional (termasuk kata
kunci AS seperti yang disebutkan sebelumnya, dan bahkan titik koma di akhir
pernyataan).
Pertimbangkan panduan berikut untuk membuat kode T-SQL mudah dibaca (dan
lebih mudah dipahami dan di-debug!):
Kapitalisasi kata kunci T-SQL, seperti SELECT, FROM, AS, dan sebagainya.
Kapitalisasi kata kunci adalah konvensi yang umum digunakan yang
membuatnya lebih mudah untuk menemukan setiap klausul dari pernyataan
yang kompleks.
Mulai baris baru untuk setiap klausul utama pernyataan.
Jika daftar SELECT berisi banyak kolom, ekspresi, atau alias, pertimbangkan
untuk mencantumkan setiap kolom di barisnya sendiri.
Baris inden yang berisi subklausul atau kolom untuk memperjelas kode mana
yang termasuk dalam setiap klausul utama.
Bekerja dengan tipe data
Kolom dan variabel yang digunakan dalam T-SQL masing-masing memiliki tipe data.
Perilaku nilai dalam ekspresi bergantung pada tipe data kolom atau variabel yang
direferensikan. Misalnya, seperti yang Anda lihat sebelumnya, Anda dapat
menggunakan+ operator untuk menggabungkan dua nilai string, atau untuk
menambahkan dua nilai numerik.
Tabel berikut ini menunjukkan tipe data umum yang didukung dalam database SQL
Server.
Exact Numeric
Approximate Numeric
Karakter
Tanggal/Waktu
Biner
Lainnya
tinyint
float
char
tanggal
biner
cursor
smallint
nyata
varchar
waktu
varbinary
hierarchyid
int
teks
tanggalwaktu
gambar
sql_variant
bigint
nchar
tanggalwaktu2
tabel
bit
nvarchar
smalldatetime
rentang waktu
decimal/numeric
ntext
tanggalwaktulewat
uniqueidentifier
numeric
xml
money
geografi
smallmoney
geometry
Nilai jenis data yang kompatibel dapat secara implisit dikonversi sesuai kebutuhan.
Misalnya, Anda dapat menggunakan + operator untuk menambahkan + ke
angka desimal, atau untuk menggabungkan nilai char dengan panjang tetap dan
nilai varchar dengan panjang variabel. Namun, dalam beberapa kasus, Anda mungkin
perlu secara eksplisit mengonversi nilai dari satu jenis data ke jenis data lainnya -
misalnya, mencoba menggunakan + untuk menggabungkan nilai varchar dan
nilai desimal akan menghasilkan kesalahan, kecuali Anda terlebih dahulu
mengonversi nilai numerik ke jenis data string yang kompatibel.
Fungsi CAST mengonversi nilai menjadi tipe data tertentu jika nilai kompatibel
dengan tipe data target. Kesalahan akan dikembalikan jika tidak kompatibel.
SQLMenyalin
ProductName
...
Kesalahan: Konversi gagal saat mengonversi nilai nvarchar ‘M’ menjadi tipe data int.
NumericSize
58
58
NULL
NULL
...
Nilai yang dapat dikonversi menjadi tipe data numerik dikembalikan menjadi nilai
desimal, dan nilai yang tidak kompatibel dikembalikan menjadi NULL, yang
digunakan untuk menunjukkan bahwa nilai tidak diketahui.
CAST adalah fungsi SQL standar ANSI untuk mengonversi antar tipe data, dan
digunakan dalam banyak sistem database. Dalam T-SQL, Anda juga dapat
menggunakan fungsi CONVERT, seperti yang ditunjukkan di sini:
SQLMenyalin
Sekali lagi, kueri ini mengembalikan nilai yang dikonversi ke tipe data yang
ditentukan, seperti ini:
ProductName
...
SQLMenyalin
SELECT SellStartDate,
CONVERT(varchar(20), SellStartDate) AS StartDate,
CONVERT(varchar(10), SellStartDate, 101) AS FormattedStartDate
FROM SalesLT.Product;
SellStartDate
StartDate
FormattedStartDate
2002-06-01T00:00:00
1/6/2002
2002-06-01T00:00:00
1/6/2002
2005-07-01T00:00:00
1 Jul 2005 12:00
1/7/2005
2005-07-01T00:00:00
1/7/2005
...
...
Handel NUL
Nilai NULL berarti tidak bernilai atau tidak diketahui. Nilai ini tidak berarti nol atau
kosong, atau bahkan string kosong. Nilai-nilai tersebut tidak diketahui. Nilai NULL
dapat digunakan untuk nilai yang belum diberikan, contohnya, ketika pelanggan
belum memberikan alamat email. Seperti yang telah Anda lihat sebelumnya, nilai
NULL juga dapat dikembalikan oleh beberapa fungsi konversi jika nilai tidak
kompatibel dengan tipe data target.
Anda akan sering mengambil langkah khusus untuk menghadapi nilai NULL. NULL
benar-benar non-nilai. Hal ini tidak diketahui. Hal ini tidak sama dengan apa pun,
dan tidak setara dengan apa pun. NULL tidak lebih besar atau kurang dari apa pun.
Kita tidak bisa mengatakan apa-apa tentang NULL, tetapi kadang-kadang kita perlu
bekerja dengan nilai-nilai NULL. Untungnya, T-SQL menyediakan fungsi untuk
konversi atau penggantian nilai NULL.
ISNULL
Fungsi ISNULL membutuhkan dua argumen. Yang pertama adalah ekspresi yang
sedang kita uji. Jika nilai argumen pertama adalah NULL, fungsi mengembalikan
argumen kedua. Jika ekspresi pertama tidak null, ekspresi dikembalikan tanpa
perubahan.
SQLMenyalin
SELECT FirstName,
ISNULL(MiddleName, 'None') AS MiddleIfAny,
LastName
FROM Sales.Customer;
NamaDepan
MiddleIfAny
NamaBelakang
Orlando
N.
Gee
Keith
Tidak ada
Howard
Donna
F.
Gonzales
...
...
...
Nilai yang diganti dengan NULL harus memiliki tipe data yang sama dengan ekspresi
yang sedang dievaluasi. Dalam contoh di atas, MiddleName adalah varchar,
sehingga penggantiannya tidak boleh numerik. Selain itu, Anda harus memilih nilai
yang tidak akan muncul dalam data sebagai nilai reguler. Terkadang sulit untuk
menemukan nilai yang tidak akan pernah muncul di data Anda.
Contoh sebelumnya menangani nilai NULL dalam tabel sumber, tetapi Anda dapat
menggunakan ISNULL dengan ekspresi apa pun yang mungkin mengembalikan
NULL, termasuk menyarangkan fungsi TRY_CONVERT dalam fungsi ISNULL.
COALESCE
Fungsi ISNULL bukan standar ANSI, jadi Anda mungkin ingin menggunakan fungsi
COALESCE sebagai gantinya. COALESCE sedikit lebih fleksibel, fungsi ini dapat
mengambil jumlah variabel argumen, yang masing-masing adalah ekspresi. Fungsi
ini akan mengembalikan ekspresi pertama dalam daftar yang bukan NULL.
Jika hanya ada dua argumen, COALESCE berjalan seperti ISNULL. Namun, dengan
lebih dari dua argumen, COALESCE dapat digunakan sebagai alternatif untuk
ekspresi CASE multi bagian menggunakan ISNULL.
Jika semua argumen adalah NULL, COALESCE mengembalikan NULL. Semua ekspresi
harus mengembalikan tipe data yang sama atau kompatibel.
SQLMenyalin
SQLMenyalin
SELECT EmployeeID,
COALESCE(HourlyRate * 40,
WeeklySalary,
Commission * SalesQty) AS WeeklyEarnings
FROM HR.Wages;
IDKaryawan
WeeklyEarnings
899.76
2
1001.00
1298.77
...
...
NULLIF
Fungsi NULLIF memungkinkan Anda mengembalikan NULL dalam kondisi tertentu.
Fungsi ini memiliki aplikasi yang berguna di area seperti pembersihan data, ketika
Anda ingin mengganti karakter kosong atau tempat penampung dengan NULL.
NULLIF mengambil dua argumen dan mengembalikan NULL jika keduanya setara.
Jika tidak sama, NULLIF mengembalikan argumen pertama.
Dalam contoh ini, NULLIF mengganti diskon 0 dengan NULL. NULLIF mengembalikan
nilai diskon jika bukan 0:
SQLMenyalin
SELECT SalesOrderID,
ProductID,
UnitPrice,
NULLIF(UnitPriceDiscount, 0) AS Discount
FROM Sales.SalesOrderDetail;
SalesOrderID
ProductID
UnitPrice
Diskon
71774
836
356.898
NULL
71780
988
112.998
0.4
71781
748
818.7
NULL
71781
985
112.998
0.4
...
...
...
...
...
Fungsi PARSE dirancang untuk mengonversi string berformat yang mewakili nilai
numerik atau tanggal/waktu. Secagai contoh, pertimbangkan kueri berikut (yang
menggunakan nilai literal daripada nilai dari kolom dalam tabel):
SQLMenyalin
MoneyValue
2021-01-01T00:00:00
199.99
Sama halnya dengan CAST dan CONVERT, PARSE memiliki varian TRY_PARSE yang
mengembalikan nilai yang tidak kompatibel dengan NULL.
STR
Contohnya:
SQLMenyalin
ProductID
Harga
680
$1432.00
706
$1432.00
707
$35.00
...
...