Pivot Query

Pada session ini kita akan membuat contoh sederhana pivot query di SQL, kita menggunakan pivot query ketika kita perlu untuk mentransform data dari level baris ke dalam kolom data.

Pivot adalah sebuah table interaktif yang mengkombinasikan dan membandingkan nominal/angka dari sebuah data. Kita bisa merotate baris dan kolomnya untuk melihat perbedaan summary dari sebuah sumber data.

Buat table database di SQL Server. Pada contoh dibawah saya beri nama tabel INVOICE. Tabel INVOICE memiliki tiga kolom data yaitu DT, PRODUCT dan AMOUNT.

Script CREATE tabel di SQL Server :
CREATE TABLE [dbo].[INVOICE](
 [DT] [datetime] NULL,
 [PRODUCT] [varchar](20) NULL,
 [AMOUNT] [numeric](18, 0) NULL
)

Setelah tabel INVOICE dibuat lakukan query INSERT datanya dengan meng-execute sript dibawah ini.
INSERT [dbo].[INVOICE] ([DT], [PRODUCT], [AMOUNT]) VALUES (CAST(0x0000A41300000000 AS DateTime), N'A', CAST(100 AS Numeric(18, 0)))

INSERT [dbo].[INVOICE] ([DT], [PRODUCT], [AMOUNT]) VALUES (CAST(0x0000A41300000000 AS DateTime), N'B', CAST(90 AS Numeric(18, 0)))

INSERT [dbo].[INVOICE] ([DT], [PRODUCT], [AMOUNT]) VALUES (CAST(0x0000A41400000000 AS DateTime), N'C', CAST(80 AS Numeric(18, 0)))

INSERT [dbo].[INVOICE] ([DT], [PRODUCT], [AMOUNT]) VALUES (CAST(0x0000A41400000000 AS DateTime), N'A', CAST(100 AS Numeric(18, 0)))

INSERT [dbo].[INVOICE] ([DT], [PRODUCT], [AMOUNT]) VALUES (CAST(0x0000A41400000000 AS DateTime), N'B', CAST(90 AS Numeric(18, 0)))

INSERT [dbo].[INVOICE] ([DT], [PRODUCT], [AMOUNT]) VALUES (CAST(0x0000A41500000000 AS DateTime), N'A', CAST(100 AS Numeric(18, 0)))

INSERT [dbo].[INVOICE] ([DT], [PRODUCT], [AMOUNT]) VALUES (CAST(0x0000A41500000000 AS DateTime), N'B', CAST(90 AS Numeric(18, 0)))

INSERT [dbo].[INVOICE] ([DT], [PRODUCT], [AMOUNT]) VALUES (CAST(0x0000A43200000000 AS DateTime), N'A', CAST(100 AS Numeric(18, 0)))

INSERT [dbo].[INVOICE] ([DT], [PRODUCT], [AMOUNT]) VALUES (CAST(0x0000A43300000000 AS DateTime), N'A', CAST(100 AS Numeric(18, 0)))

INSERT [dbo].[INVOICE] ([DT], [PRODUCT], [AMOUNT]) VALUES (CAST(0x0000A43300000000 AS DateTime), N'B', CAST(90 AS Numeric(18, 0)))

INSERT [dbo].[INVOICE] ([DT], [PRODUCT], [AMOUNT]) VALUES (CAST(0x0000A43300000000 AS DateTime), N'C', CAST(80 AS Numeric(18, 0)))

INSERT [dbo].[INVOICE] ([DT], [PRODUCT], [AMOUNT]) VALUES (CAST(0x0000A43400000000 AS DateTime), N'A', CAST(100 AS Numeric(18, 0)))

INSERT [dbo].[INVOICE] ([DT], [PRODUCT], [AMOUNT]) VALUES (CAST(0x0000A43400000000 AS DateTime), N'B', CAST(90 AS Numeric(18, 0)))

INSERT [dbo].[INVOICE] ([DT], [PRODUCT], [AMOUNT]) VALUES (CAST(0x0000A43500000000 AS DateTime), N'C', CAST(80 AS Numeric(18, 0)))

Kalau kita query SELECT table INVOICE dari hasil INSERT di atas maka akan menghasilkan result seperti gambar berikut ini.

Dari data seperti gambar di atas, kita bisa membuat query yang menghasilkan data produk per tanggal dan produk per bulan dengan nominal amountnya menggunakan pivot queri.

Berikut script pivot query produk per tanggal di bulan January :
SELECT *
 FROM
 (
  SELECT 
  DT AS [DATE]
  ,PRODUCT
  ,AMOUNT 
  FROM INVOICE WHERE MONTH(DT)=1
 ) X
PIVOT
 (
 SUM(AMOUNT)
 FOR [DATE] IN ([2015-01-01],[2015-01-02],[2015-01-03])
 ) P
Result query setelah di-execute :

Script pivot query produk per bulan :
SELECT * FROM
(
 SELECT 
 DATENAME(MONTH,DT) AS [MONTH]
 ,PRODUCT
 ,AMOUNT 
 FROM INVOICE
) X
PIVOT
(
SUM(AMOUNT)
FOR [MONTH] IN ([JANUARY],[FEBRUARY])
) P

Result query setelah di-execute :

Dari script pivot query diatas, kita masih menggunakan fix column. Berikut ini pivot query dengan kolom dinamis.
DECLARE @columns NVARCHAR(MAX), @sql NVARCHAR(MAX);
SET @columns = N'';
SELECT @columns += N', ' + QUOTENAME([MONTH])
FROM (SELECT DISTINCT DATENAME(MONTH,DT) AS [MONTH] FROM INVOICE) AS C;
SET @sql = N'
SELECT PRODUCT,' + STUFF(@columns, 1, 2, '') + '
FROM
(
  SELECT DATENAME(MONTH,DT) AS [MONTH]
  ,PRODUCT
  ,AMOUNT
   FROM INVOICE) AS X
PIVOT
(
  SUM(AMOUNT) FOR [MONTH] IN ('
  + STUFF(REPLACE(@columns, ', [', ',['), 1, 1, '')
  + ')
) AS P;';
PRINT @sql;
EXEC sp_executesql @sql;


Install SSL Certificate di IIS

SSL Certificate adalah sebuah file data berukuran kecil yang menyimpan data cryptographic seperti Common Name, Company Name, Country, City, Province dan Organization Unit Name sekaligus dengan informasi identitas atas Server Anda. SSL sendiri singkatan dari Secure Socket Layer, juga dikenal dengan istilah Transport Secure Layer (TLS). Ketika SSL Certificate di install pada sebuah web server, ia melindungi transmisi data antara server dan browser. SSL digunakan untuk melindungi transaksi kartu kredit, data transfer, user/password login dan informasi data sensitive lainnya.

Dengan SSL Certificate data jadi terenkripsi sebelum melakukan transmisi melalui internet. Data yang telah terenkripsi dapat didekodekan hanya oleh server yang mana aAnda benar-benar mengirimkannya sendiri. Ini adalah jaminan bahwa informasi yang anda kirimkan ke situs web tidak akan dicuri atau dirusak.

Dimana kita bisa mendapatkan SSL Certificate, kita bisa membuatnya sendiri dengan men-generatenya menggunakan tool gratis yang bisa didownload di internet maupun membelinya dari vendor penyedia SSL Certificate seperti Symantec dan GeoTrush.

Pada session ini kita akan belajar menginstall SSL Certificate di web server IIS. Berikut ini langkah-langkahnya :

  1. Buka Control Panel pilih Administrative Tools, kemudian buka Information Services (IIS) Manager anda.
  2. Dari Panel Home, double-click the "Server Certificates".
  3. Dari panel "Actions" disebelah kanan, pilih "Complete Certificate Request."
  4. Setelah “Complite Certifacte Request” dipilih, akan membuka jendela “Specify Certificate Authority Response”. Kemudian browse file Sertifikat SSL, isi Friendly name sesuai nama Aplikasi, Kemudian tekan tombol OK.
  5. Setelah file Sertifikat SSL terpasang selanjutnya Binding ke Web Aplikasi. Pilih Web Aplikasi di Menu Site.
  6. Dari panel "Actions" disebelah kanan, pilih "Bindings...". Kemudian akan tampil jendela Site Binding.
  7. Pada jendela Site Binding tekan tombol “Add”, kemudian akan tampil jendela Edit Site Bindings. Pada Jendela Edit Site Binding pilih “https” di combo Type, isi Port yang akan digunakan kemudian pada combo File SSL Sertificate pilih nama Friendly Name yang sudah kita buat di atas. Selanjutnya tekan tombol OK.
  8. Restart Web Aplikasi, selanjutnya browse Web Aplikasi di site “https”.
  9. Selesai, SELAMAT MENCOBA....!


Gzip Compression


Gzip adalah sebuah file format, atau metode pemampatan file. Dengan gzip, file anda dapat di mampatin menjadi lebih kecil ukuranya. Gzip juga digunakan dalam penyajian konten web sehingga meningkatkan performance web anda.

Dengan menggunakan gzip compression, web anda akan lebih cepat untuk dimuat dan juga menghemat bandwith pada hosting atau server.

Kebanyakan browser sekarang seperti Internet Explorer, Firefox, Opera dan lainnya sudah mendukung gzip compressed. Ada banyak web server yang sudah menyediakan fitur gzip compression kita tinggal mengaktifkan saja.

Pada contoh di session ini kita akan mengaktifkanya di web server Tomcat dan IIS. Saya asumsikan anda sudah punya web aplikasi yang sudah di hosting di Tomcat bagi yang develop web menggunakan Java environment atau di IIS bagi yang mendevelop menggunakan .Net environment.

Berikut ini cara konfigurasinya di Tomcat, buka file /config/server.xml di Tomcat anda. Cari baris Connection kemudian tambahkan script dibawah diantara tag Connection.

compression="on" 
compressionMinSize="2048" 
noCompressionUserAgents="gozilla, traviata" 
compressableMimeType="text/html,text/xml"

Contoh :
<Connector connectionTimeout="20000"
 compression="on"
        compressionMinSize="2048"
        noCompressionUserAgents="gozilla, traviata"
        compressableMimeType="text/html,text/xml"
 port="8181" 
 protocol="HTTP/1.1"
 redirectPort="8443"/>

Simpan perubahan scriptnya dan jalankan kembali Tomcat anda. Kini aplikasi anda sudah mengaktifkan fitur Gzip Compression.

Anda bisa melihat perbedaannya sebelum dan setelah menggunakan Gzip Compression, dengan menggunakan Firebug tool, anda bisa mendownloadnya di internet. Jalankan web aplikasi di browser Mozzila, klik dua kali icon serangga di sudut kanan atas.

Gambar dibawah ini adalah tampilan halaman sebelum Gzip compression diaktifkan.
Gambar tampilan halaman setelah gzip compression diaktifkan.

Berdasarkan testing menggunakan Firebug tool diatas terlihat perubahannya yang sangat signifikan untuk mengakses halaman yang sama. Sebelum Gzip compression diaktifkan browser butuh waktu 4.88s dengan response data sebesar 7.1MB setelah diaktifkan hanya butuh 673ms untuk response data 74.9KB. Disini terjadi perubahan ukuran file dari 7.1MB menjadi 74.9KB.

Untuk konfigurasi di IIS sangat mudah dengan menggunakan UI Interfaces. Pastikan dahulu kalau anda sudah menambahkan Ferformance Features di IIS anda. Jika belum install dahulu dengan pilih Control Panel, klik Program and Feature kemudian pilih Turn Windows feature on or off seperti gambar dibawah.


Centang Dynamic Content Compression dan Static Content Compression seperti gambar dibawah, kemudian tekan OK.

Setelah proses install selesai, buka IIS Manager anda, pilih panel Features View, klik dua kali icon Compression.
Centang Enable dynamic content compression dan Enable static content compression, kemudian tekan Apply dan restart IIS anda.

SELAMAT MENCOBA..!