tea's corner

live and life

Business Process Management (BPM), yang dalam bahasa Indonesia disebut dengan Manajemen Proses Bisnis, merupakan sebuah pendekatan yang berbasis proses untuk meningkatkan performa bisnis yang mengkombinasikan proses, IT dan tata kelola. Jadi, ada kolaborasi antara orang-orang bisnis dengan orang-orang IT untuk membantu perkembangan proses bisnis yang efektif, transparan, dan agile (cepat mengikuti perubahan).

Proses peningkatan ini terbentang antara people, system, function, business, customers, suppliers, and partners. Setiap elemen ini berkaitan satu sama lain dan berjalan beriringan sesuai dengan policy yang ada untuk mencapai business goal.

Ada tiga dimensi dalam BPM, yang disesuaikan dengan namanya, yaitu:

  1. Business. Dimensi ini fokus kepada value bagi customer dan stakeholder. BPM memfasilitasi adanya sustainability dan continous improvement, yang dinilai dengan adanya inovasi, produktifitas, loyalti dan kepuasan, serta efektif dan efisien.
  2. Process. Dimensi ini yang melakukan transformasi dari aktifitas menjadi nilai-nilai bisnis. Transformasi ini merupakan bagaimana bisnis bekerja. Ada tiga tujuan BPM untuk proses, yaitu:
    1. Efektifitas, yang dinilai dari adanya added value bagi customer dan stakeholder. Efektifitas ini dicapai dengan kolaborasi antara people, information dan system.
    2. Transparansi. Setiap orang di setiap bagian (business people) mengetahui apa role-nya dan value creation apa yang dapat dia lakukan. Tujuan utamanya adalah peningkatan performa proses.
    3. Agility. Proses yang ada mampu beradaptasi dengan cepat terhadap perubahan yang terjadi baik dalam skala internal maupun eksternal yang mempengaruhi proses bisnis. Tentunya dengan bantuan IT, resiko perubahan dapat diminimalisir.
  3. Management. Dimensi ini merupakan dimensi enabling. Mereka mempunyai peran utama dalam menyelaraskan people dan system untuk mencapai business goal. Management merupakan alat bagi BPM untuk mencapai business success.

Untuk mendukung ketiganya agar selaras, dibutuhkan katalis yaitu teknologi yang mendampingi BPM atau yang biasa disebut sebagai BPM technologies, beberapa antara lain:

  1. Process modelling and design. Tujuannya adalah untuk pemodelan dan perancangan proses dan orkestrasi sumber daya. Untuk penotasiannya, bisa menggunakan BPMN (Business Proses Modelling Notation).
  2. Integration. Menggunakan service-oriented architecture (SOA) sebagai pendekatan dalam pengintegrasian IS, data source, dll kedalam proses bisnis.
  3. Composite application framework.
  4. Execution
  5. Business activity monitoring.
  6. Controls

 

Semoga bermanfaat…

Kumpulan data (aggregation of data) diproses oleh multiple-row function untuk menghasilkan data-data yang digunakan untuk pelaporan. Multiple-row function ini dapat juga disebut sebagai aggregate function atau group function (dalam tulisan ini, kita memakai istilah group function). Dalam SQL, group function mengolah sekumpulan baris untuk kemudian mengembalikan sebuah nilai per group-nya. Masing-masing group dapat merepresentasikan tabel atau bagian tabel. Sintaks dasar group function:

SELECT [<kolom1>,] <group function>(<kolom2>)
FROM <table list>
GROUP BY <kolom1>
HAVING <kolom2><operator pembanding><nilai>

Dari sintaks tersebut, dapat dilihat bahwa kita bisa menggunakan group function pada kolom <kolom2> bersamaan dengan SELECT pada kolom lain <kolom1>. Karena adanya <kolom1>, maka kita harus melakukan pengelompokan berdasarkan <kolom1>pada GROUP BY. Sebagai informasi tambahan, pengelompokan bisa dilakukan pada kolom lain yang tidak ada pada <select list>. Segala bentuk kondisi dalam group function diproses pada HAVING dengan komposisi kondisi yang sama seperti WHERE.

Dalam membentuk aggregation, ada beberapa acuan yang dapat dipakai antara lain:

  1. Penggunaan DISTINCT membuat nilai yang diproses adalah nilai yang berbeda dari nilai lainnya. ALL merupakan default dan hal ini tidak perlu diubah.
  2. Tipe data yang dapat diproses oleh group function adalah CHAR, VARCHAR, NUMERIC, dan DATE.
  3. Semua group function mengabaikan nilai NULL. Agar nilai ini tetap diolah, gunakan ISNULL atau COALESCE.

Beberapa macam group function, antara lain:

  1. AVG(), atau average, yang digunakan untuk menghitung rata-rata nilai
  2. COUNT() digunakan utnuk menghitung jumlah baris data
  3. MAX() digunakan untuk mencari nilai tertinggi
  4. MIN() digunakan untuk mencari nilai terendah
  5. SUM(), atau summary, yang digunakan untuk menghitung jumlah nilai

Contoh pemakaian group function:

SELECT AVG(Nilai_Akhir), SUM(Nilai_Akhir), MAX(Nilai_Akhir),
MIN(Nilai_Akhir), COUNT(*)
FROM Nilai

Pengelompokan data

Baris dalam tabel dapat dibagi-bagi kedalam kelompok-kelompok yang lebih kecil menggunakan GROUP BY. Beberapa aturan dalam GROUP BY:

  • Jika ada group function dalam <select list>, kolom-kolom yang tidak memiliki group function harus masuk kedalam GROUP BY.
  • Dengan menggunakan WHERE, kita bisa mengabaikan baris-baris tertentu sebelum dilakukan pembagian.
  • Isi dari GROUP BY adalah kolom, bukan alias.

Sebagai contoh, kita ingin menghitung jumlah SalesQuota dan membaginya kedalam teritori. Perhitungan dilakukan untuk SalesQuota yang sudah memiliki teritori. Dengan begitu, setelah dilakukan pengurangan baris data (adanya WHERE), SQL Server melakukan perhitungan jumlah SalesQuota untuk masing-masing teritori. Perhatikan query berikut ini:

SELECT TerritoryID, SUM(ISNULL(SalesQuota,0)) [Total]
FROM Sales.SalesPerson
WHERE TerritoryID IS NOT NULL
GROUP BY TerritoryID;

Membatasi hasil group function

Sama seperti WHERE, kita membutuhkan kondisi-kondisi di saat-saat tertentu untuk membatasi hasil dari group function. Nah, untuk melakukan hal ini, ada HAVING. Perhatikan contoh pada query berikut:

SELECT TerritoryID, SUM(ISNULL(SalesQuota,0)) [Total]
FROM Sales.SalesPerson
WHERE TerritoryID IS NOT NULL
GROUP BY TerritoryID
HAVING SUM(ISNULL(SalesQuota,0)) > 400000;

Dalam contoh tersebut, dilakukan pembatasan hanya untuk jumlah SalesQuota lebih besar dari 400000. Jumlah SalesQuota ini ada dalam <select list>. Namun, kita juga bisa memberikan kondisi untuk group function yang tidak ada dalam <select list>.

Semoga bermanfaat…

Function merupakan salah satu fitur yang handal dalam SQL. Mereka dapat melakukan:

  • Perhitungan data
  • Modifikasi data
  • Memanipulasi output
  • Memformat tanggal dan numerik untuk ditampilkan
  • Mengkonversi tipe data

Single-row functions beroperasi hanya pada sebuah baris dan mengembalikan satu nilai per baris. Ada beberapa tipe single-row functions pada SQL Server. Pada tulisan ini dibahas tipe-tipe berikut:

  1. String, menerima argumen berupa karakter (atau string) dan dapat mengembalikan nilai berupa karakter atau numerik.
    1. LOWER() digunakan untuk mengubah karakter menjadi huruf kecil. Sedangkan UPPER() sebaliknya, mengubah karakter menjadi huruf besar.
      Contoh pemakaian LOWER() dan UPPER():

      SELECT ContactID, Title, UPPER(FirstName)
      FROM Person.Contact
      WHERE LOWER(FirstName) = ‘kim’;

    2. Character manipulation function
      1. LEFT() mengambil beberapa karakter dimulai dari sebelah kiri string. Ada 2 argumen yaitu (1) string ekspresi, dan (2) panjang karakter yang diambil. Mengembalikan nilai berupa string.
      2. RIGHT() mengambil beberapa karakter dimulai dari sebelah kanan string. Ada 2 argumen yaitu (1) string ekspresi, dan (2) panjang karakter yang diambil. Mengembalikan nilai berupa string.
      3. SUBSTRING() mengambil beberapa karakter ditengah-tengah string. Ada 3 argumen yaitu (1) string ekspresi, (2) posisi awal (dimulai dari posisi ke-1), dan (3) panjang karakter yang diambil. Mengembalikan nilai berupa string.
      4. LEN() menghitung panjang string. Ada 1 argumen yaitu (1) string ekspresi. Mengembalikan nilai berupa numerik.

      Contoh pemakaian character manipulation function:

      SELECT LastName, LEFT(LastName, 2) [LEFT],
      RIGHT(LastName,2) [RIGHT],
      SUBSTRING(LastName,2,3) [SUBSTR], LEN(LastName) [LEN]
      FROM Person.Contact
      WHERE LastName LIKE ‘Ac%’;

  2. Mathematical, menerima argumen berupa karakter (atau string) dan dapat mengembalikan nilai berupa karakter atau numerik.
    1. Round function
      1. CEILING(). Pembulatan nilai keatas. Ada 1 argumen yaitu (1) ekspresi numerik. Mengembalikan nilai berupa numerik.
      2. FLOOR(). Pembulatan nilai kebawah. Ada 1 argumen yaitu (1) ekspresi numerik. Mengembalikan nilai berupa numerik.
      3. ROUND(). Pembulatan nilai sesuai dengan presisi yang diberikan. Ada 2 argumen yaitu (1) ekspresi numerik, dan (2) presisi. Mengembalikan nilai berupa numerik.

      Contoh pemakaian round function:

      SELECT CEILING(50.6) [CEILING], FLOOR(50.6) [FLOOR],
      ROUND(50.6, 0) [ROUND];

    2. POWER() digunakan untuk pemangkatan. POWER() membutuhkan 2 argumen yaitu (1) nilai numerik yang akan dipangkatkan, dan (2) nilai pangkatnya. Sedangkan SQRT() adalah akar pangkat dua dari nilai argumen yang diberikan.
      Contoh pemakaian POWER() dan SQRT():

      SELECT POWER(2,3) [POWER], SQRT(16) [SQRT];

  3. Date and Time, SQL Server menyimpan tanggal kedalam format numerik antara lain: year, quarter, month, day, week, hour, minute, second, milisecond. Date and time function ini mengolah argumen berupa date and time dan mengembalikan nilai dalam bentuk string, numerik, dan date and time.
    1. GETDATE() mengembalikan date and time dari sistem (komputer) dalam format standar SQL Server. Format standar SQL Server untuk date and time adalah YYYY-MM-DD HH24:MI:SS.MS
    2. Function untuk mengambil bagian dari DATE and TIME. Dengan adanya function ini, kita bisa melakukan seleksi data untuk waktu/saat tertentu, dengan tingkat presisi yang tinggi. Beberapa function ini antara lain:
      1. DATEPART(). Mengembalikan nilai numerik yang merepresentasikan bagian tanggal yang diambil. Ada 2 argumen, yaitu (1) bagian tanggal yang diambil, dan (2) tanggal. Bagian yang bisa diambil antara lain tahun (yyyy/yy), bulan (mm,m), hari (dd/d), hari dalam tahun (dy), minggu (ww), hari dalam minggu (dw), jam (hh), menit (mi), detik (ss), mili detik (ms).
      2. DAY() mengembalikan nilai numerik yang merepresentasikan bagian tanggal yaitu hari. Ada 1 argumen, yaitu (1) tanggal.
      3. MONTH() mengembalikan nilai numerik yang merepresentasikan bagian tanggal yaitu bulan. Ada 1 argumen, yaitu (1) tanggal.
      4. YEAR() mengembalikan nilai numerik yang merepresentasikan bagian tanggal yaitu tahun. Ada 1 argumen, yaitu (1) tanggal.
    3. DATEADD() mengembalikan tanggal baru berdasarkan penambahan interval pada bagian tanggal tertentu. Ada 3 argumen yaitu (1) bagian tanggal, (2) nilai penambahan, dan (3) tanggal yang akan ditambahkan. Sedangkan DATEDIFF() mengembalikan selisih waktu (bagian tanggal) antar dua tanggal. Ada 3 argumen yaitu (1) bagian tanggal (bisa dilihat pada tabel 10), (2) tanggal pertama yang akan dikurangi, dan (3) tanggal kedua sebagai pengurang.
      Contoh pemakaian DATE and TIME:

      SELECT GETDATE() Tanggal,
      DATEADD(mm, 2, GETDATE()) [DATEADD],
      DATEDIFF(mm, GETDATE(), GETDATE()) [DATEDIFF];

  4. Others
    1. CAST() dan CONVERT(). Function ini digunakan untuk mengubah dari satu tipe data ke tipe data yang lain ketika nilai tersebut ditampilkan. Sehingga, tentu saja nilai balikan dari function ini disesuaikan dengan tipe data perubahannya.
      CAST() membutuhkan 2 argumen yaitu (1) nilai yang akan diubah, dan (2) tipe data pengubah. Sedangkan CONVERT() membutuhkan 3 parameter yaitu (1) tipe data pengubah, (2) nilai yang akan diubah, (3) style pengubah.
      Contoh pemakaian CAST() and CONVERT():

      SELECT CAST(12 AS CHAR(2)) [CAST],
      CAST(12 AS CHAR(2)) + ‘ bulan’ [Cop],
      CONVERT(CHAR, 12) [CONVERT];

    2. ISNULL(). Function ini menggantikan nilai NULL dengan nilai lain. Ada 2 argumen yaitu (1) kolom/ekspresi, dan (2) nilai pengganti. Nilai pengganti merupakan nilai yang dikembalikan, yang mempunyai tipe data yang sama dengan argumen pertama.
    3. NULLIF(). Function ini membandingkan 2 buah ekspresi. Jika keduanya sama, maka function ini mengembalikan nilai NULL. Jika tidak sama, maka function ini mengembalikan ekspresi pertama.
    4. COALESCE(). Function ini mengembalikan ekspresi NOT NULL pertama dalam daftar argumennya. Function ini sebenarnya sama seperti CASE dalam conditional expression.
  5. Conditional Expression
    Ekpresi kondisi ini sama seperti logika IF-THEN-ELSE dalam dunia pemrograman. Dalam SQL Server, ekspresi kondisi direpresentasikan oleh penggunaan CASE.

    CASE <kolom/ekpresi>
    WHEN <nilai pembanding1> THEN <nilai kembali1>
    WHEN <nilai pembanding2> THEN <nilai kembali2>
    WHEN <nilai pembanding n> THEN <nilai kembali n>
    ELSE <nilai kembali else>

    SQL Server akan melihat apakah ekspresi yang diberikan sama dengan <nilai pembanding 1>, jika ya maka CASE mengembalikan <nilai kembali 1>. Jika tidak maka dilakukan pengecekan apakah sama dengan <nilai pembanding 2>, jika ya maka CASE mengembalikan <nilai kembali 2>. Begitu seterusnya sampai dengan <nilai pembanding n>. Jika dari semua nilai pembanding tidak sama, maka CASE akan mengembalikan <nilai kembali else>.
    Contoh pemakaian CASE:

    SELECT EmployeeID, CASE MaritalStatus
    WHEN ‘M’ THEN ‘Married’ WHEN ‘S’ THEN ‘Single’
    END [Status Nikah]
    FROM HumanResources.Employee;

 

Semoga bermanfaat…

Prioritas ini menentukan kondisi mana yang akan dijalankan terlebih dahulu. Namun prioritas ini dapat diganti dengan menggunakan parentheses (kurung) pada kondisi yang ingin dijalankan terlebih dahulu.

  1. Operator aritmatik
  2. Operator konkatenasi
  3. Kondisi pembanding
  4. IS (NOT) NULL, LIKE, (NOT) IN
  5. (NOT) BETWEEN … AND …
  6. Tidak sama dengan
  7. Operator logika NOT
  8. Operator logika AND
  9. Operator logika OR

Sebagai contoh penggunaan prioritas, kita ingin mengetahui data SalesPerson yang bekerja di TerritoryID 1 dan 5 dan dengan SalesPersonID 279. Logikanya, data yang tampil dari kondisi pada TerritoryID 1 dan 5 adalah 4 data dan SalesPersonID 279 adalah salah satunya. Sehingga yang ditampilkan hanya 1 data. Ketika dilihat pada Query 17, hasil yang tampil adalah 4 baris.

Secara teknis, baris pertama dengan TerritoryID 5, tidak memenuhi kondisi 1 (FALSE), memenuhi kondisi 2 (TRUE), dan memenuhi kondisi 3 (TRUE). Karena AND dikerjakan dulu, maka kondisi 2 dan 3 diproses terlebih dahulu menghasilkan TRUE. Di-OR dengan kondisi 1 sehingga menjadi TRUE.

Untuk baris kedua dengan TerritoryID 1, memenuhi kondisi 1 (TRUE), tidak memenuhi kondisi 2 (FALSE), tidak memenuhi kondisi 3 (FALSE). Kondisi 2 dan 3 menghasilkan FALSE. Diproses dengan kondisi 1 sehingga menjadi TRUE. Hal yang sama terjadi juga pada baris selanjutnya.

SELECT      *
FROM   Sales.SalesPerson
WHERE  TerritoryID = 1
OR TerritoryID = 5
AND SalesPersonID = 279;

Prioritas pertama sebenarnya adalah TerritoryID sehingga dalam Query selanjutnya, kondisi 1 dan 2 diberi kurung untuk diproses terlebih dahulu.

SELECT      *
FROM   Sales.SalesPerson
WHERE  (TerritoryID = 1
OR TerritoryID = 5)
AND SalesPersonID = 279;

Semoga bermanfaat…

Menggunakan klausa SELECT dan FROM, berarti semua baris data diambil dan ditampilkan. Namun, bagaimana jika kita ingin membatasi apa yang ditampilkan? SQL menggunakan klausa WHERE untuk menspesifikasikan kondisi yang harus dipenuhi oleh setiap baris data. Jika kondisi terpenuhi, dalam arti kata lain bernilai TRUE, maka baris data tersebut akan ditampilkan. Dan sebaliknya, jika bernilai FALSE, maka tidak akan ditampilkan.

Penggunaan WHERE dapat dilihat pada rumusan berikut:

SELECT [DISTINCT|ALL] <select list>
FROM <table list>
WHERE <row condition>

<row condition> berisi 3 elemen yaitu:

  1. Nama kolom, bukan alias
  2. Operator pembanding
  3. Nama kolom, konstanta, atau sekumpulan nilai

Sebagai contoh, perhatikan query berikut ini:

SELECT      CustomerID
FROM         Sales.Customer
WHERE      CustomerType = ‘S’;

Dalam kondisi, elemen 1 adalah CustomerType, elemen 2 adalah = , dan elemen 3 adalah ‘S’. Umumnya, dalam elemen 1 dan elemen 3 telah diketahui sebelumnya (jika belum, bisa disolusikan dengan Sub Query). Yang menjadi kendala terbesar adalah pada elemen 2. Kesalahan dalam memilih operator dapat memberikan HASIL yang BERBEDA, dan ini TIDAK  dianggap sebagai ERROR.

Beberapa operator pembanding antara lain:

  1. = (sama dengan)
  2. > (lebih besar dari) dan >= (lebih besar sama dengan)
  3. < (kurang dari) dan <= (kurang dari sama dengan)
  4. <> atau != (tidak sama dengan)
  5. BETWEEN … AND … (diantara range). Contoh: ContactID BETWEEN 5 AND 8
  6. IN (termasuk salah satu diantara kumpulan nilai). Contoh: ContactID IN(100,300,900)
  7. LIKE (cocok dengan pola karakter tertentu). POLA ini diwakili oleh WILDCARDS. ada 2 yaitu _ (1 karakter) dan % (>1 karakter). Contoh: FirstName LIKE ‘_am%’ –> hasil: James, Damri, Sam, dll.
  8. IS [NOT] NULL (pengecekan terhadap nilai NULL)
Skip to toolbar