เคล็ดลับการทำรายงานจากฐานข้อมูล

Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน

 

Reporting Services

เคล็ดลับการทำรายงานจากฐานข้อมูล

ลาภลอย วานิชอังกูร (laploy.com)

โพสบล็อกตอนนี้จะขอเล่าประสบการณ์เมื่อผู้เขียนให้คำปรึกษาเกี่ยวกับ Business Intelligence ในหน่วยงานแห่งหนึ่ง แม้จะเป็นเหตุการณ์ที่ผ่านมานานแล้ว แต่บทเรียนย้งใช้ได้ดีอยู่จนถึงตอนนี้

Business Intelligence

การใช้ BI มีมาหลายสิบปีแล้ว แต่ก่อนหน้าที่จะมีโปรแกรม MS-SQL การมีหรือการใช้ BI เป็นสิ่งที่ยุ่งยากและมีราคาแพง คงมีแต่หน่วยงานขนาดใหญ่เท่านั้นที่จะสามารถจัดหา BI มาใช้ได้ แต่การมาถึงของ SQL2008 ทำให้ทุกอย่างเปลี่ยนแปลงไป ปัจจุบันนี้หน่วยงานเล็กๆ ก็สามารถมี BI ใช้ได้

ใน SQL2008 มีส่วนที่เกี่ยวข้องกับ BI โดยตรงสามส่วนคือ Integration services (SSIS) ทำหน้าที่รวบรวมข้อมูลจากหลายๆ แหล่งเพื่อนำมาสังเคราะห์ให้อยู่ในรูปแบบที่นำไปใช้ได้อย่างมีประสิทธิภาพ , Analysis services (SSAS) ใช้สร้าโมเดลสำหรับการวิเคราะห์ข้อมูลเช่น Cube และ Subspace และ Reporting services (SSRS) ใช้สร้างรายงานแบบ OLAP ซึ่งเป็นส่วนที่ท่านจะได้เรียนโดยละเอียดในบทนี้และบทต่อไป

หากท่านติดตั้งโปรแกรม Microsoft Visual Studio 2008 (MSVS2008) ไว้และติดตั้งโปรแกรม SQL2008 พร้อมส่วนเสริม BI ท่านจะสามารถใช้ MSVS2008 พัฒนางาน BI ได้ทั้งครบถ้วนทั่งสามแบบคือ SSIS, SSAS และ SSRS

 

สถาปัตยกรรม

"เอเลฟอง" (ชื่อสมมุติ) คือหน่วยงานหนึ่งที่ผู้เขียนทำหน้าที่ให้คำปรึกษา เอเลฟองเป็นบริษัทสัญชาติฝรั่งเศสที่มีสาขาหลายร้อยแห่งอยู่ในหลายประเทศทั่วโลก ในส่วนไอทีหน่วยงานนี้ใช้เทคโนโลยีของไมโครซอฟต์เป็นหลัก ส่วนฐานข้อมูลแบ่งออกเป็นสองส่วน ฐานข้อมูลที่ประมวลผลธุรกรรมการเงินใช้ออราเคิล และฐานข้อมูลที่ประมวลผลธุรกรรมในฝ่ายการผลิตใช้ไมโครซอฟต์ SQL เวอร์ชัน 2000

สาเหตุที่เอเลฟองใช้ดาต้าเบสเซอฟเวอร์เวอร์ชันเก่าขนาดนี้เพราะแอพลิเกชันที่ใช้อยู่ (ชื่อ Fx.Net) เป็นแอพลิเกชันที่พัฒนาขึ้นนานแล้ว โดยมีสำนักงานใหญ่ของเอเลฟองภาคพื้นเอเซียแปซิฟิก ว่าจ้างให้บริษัทใน "แบงกาลอร์" ทำหน้าที่ผลิตและดูแล Fx.Net เป็นแอพลิเกชันที่ถูกเขียนด้วยภาษา C# บนด็อตเน็ตเวอร์ชัน 1.1 และไมโครซอฟต์ SQL เวอร์ชัน 2000

เอเลฟองผลิตสินค้าแต่ละเดือนหลายแสนชิ้น ข้อมูลปริมาณมหาศาลที่เกิดจากขั้นตอนต่างๆ ในการผลิตสินค้าถูกเก็บรวบรวมไว้ในฐานข้อมูลอย่างเป็นระบบ นี่คือโกดังสะสมข้อมูลหรือ "ดาต้าแวร์เฮาส์" (Data warehouse) ที่นอกจากจะจำเป็นต้องใช้ในกระบวนการผลิตแล้ว ผู้บริหารระดับต่างๆ ยังหวังว่าจะสามารถนำข้อมูลเหล่านี้มาเรียบเรียงให้อยู่ในรูปแบบที่ทำให้เกิด "ความเฉียบแหลมทางธุรกิจ" (Business Intelligence หรือนิยมเรียกย่อว่า BI)

 

นิทานแห่งสองนาคร

แน่นอนว่าการนำข้อมูลที่กระจัดกระจายอยู่ในตารางต่างๆ นับร้อย มาเรียงร้อยให้อยู่ในรูปแบบที่ผู้บริหารสามารถอ่านเข้าใจได้จำเป็นต้องอาศัยการทำ "รายงาน" ในรูปแบบต่างๆ ปัญหาหลักคือ Fx.Net ทำรายงานได้ไม่ดีนักเนื่องจากสาเหตุสองประการ

ประการแรกคือการเกิดเออเรอร์แบบหมดเวลา (Query time-out error) ปัญหานี้เกิดจากโปรแกรม Fx.Net เรียกใช้เฟรมเวิร์คของเอเลฟองและสตอร์โปรซีเจอร์ (Stored procedure) ที่ถูกกำหนดไว้แล้วโดยศูนย์กำหนดทิศทางด้านไอที (ทีเซ็นเตอร์ T-Center) ของเอเลฟองที่สำนักงานใหญ่ในฝรั่งเศส บ่อยครั้งเมื่อรายงานต้องทำคิวรีข้อมูลปริมาณมากๆ จะเกิด time-out แต่ผู้พัฒนาซอฟต์แวร์ที่แบงกาลอร์ไม่สามารถปรับเปลี่ยนโครงสร้างหลัก เพื่อแก้ปัญหานี้ได้ตามอำเภอใจ

ประการที่สองรูปแบบของรายงานไม่สวย คือเป็นเพียงเท็กซ์ ไม่สามารถใส่ตารางหรือแผนภูมิได้ ปัญหานี้เกิดจากโปรแกรม Fx.Net (รวมถึงเฟรมเวิร์คของเอเลฟอง) เป็นโปรแกรมที่ออกแบบมาให้ทำงานในระดับการผลิต (shop floor) จึงขาดคุณสมบัติที่จำเป็นต้องใช้เพื่อทำรายงานระดับบริหาร

 

ทางเลือกที่สาม

ทางเลือกในการแก้ปัญหานี้มีสามทาง แต่ละวิธีต่างก็มีข้อดีข้อเสียในตัวของมันเองทั้งสิ้นดังนี้

  • สร้างแอพลิเกชันรายงาน : วิธีนี้คือเขียนแอพลิเกชันขึ้นแยกต่างหาก (โดยไม่ขึ้นกับเฟรมเวิร์คของเอเลฟอง) โดยใช้ภาษา C# 3.0 ซึ่งมีคุณสมบัติเอื้ออำนวยการการทำคิวรีได้ในตัว ข้อดีของวิธีนี้คือจะสามารถทำรายงานที่มีรูปแบบพิสดารอย่างไรก็ได้ตามใจชอบ ข้อเสียของทางเลือกนี้คือใช้เวลาและค่าใช้จ่ายสูง
  • ใช้โปรแกรม Crystal Report : คริสทัลรีพอร์ท (CR) เป็นโปรแกรมช่วยสร้างรายงาน ใช้งานง่าย มีประสิทธิภาพสูง สร้างรายงานที่ซับซ้อนมากๆ ได้โดยใช้เวลาสั้น ข้อเสียคือจะมีค่าใช้จ่ายในการซื้อมาใช้ และเป็นการเพิ่มเทคโนโลยีจากผู้ผลิตรายที่สามเข้าสู่ระบบ
  • ใช้ Reporting Services : รีพอร์ทติง เซอร์วิสเซส (RS) แม้จะมีลูกเล่นน้อยกว่า CR แต่ก็มีคุณสมบัติใกล้เคียงกัน จึงมีข้อดีคล้ายกัน แต่ไม่มีข้อเสียเรื่องค่าใช้จ่าย (ฟรี คือแถมมาพร้อมกับตัว SQL เซอฟเวอร์) และความกังวลเรื่องเทคโนโลยีจากผู้ผลิตรายที่สาม แต่มีข้อเสียอื่นคือไม่สามารถทำรายงานที่ซับซ้อนมากๆ ได้ และขาดคุณสมบัติเพื่ออำนวยความสะดวกบางอย่าง (เช่น การป้อนพารามิเตอร์วันเวลาโดยแสดงส่วนติดต่อผู้ใช้เป็นปฏิทิน)

 

รายงานแบบ OLAP

ทางเลือกต่างๆ ที่ว่ามาสามอย่างข้างต้นถูกนำมาพิจารณาอย่างรอบคอบ และพบว่ามันไม่สามารถแก้ปัญหาหลักอย่าง time out ได้ ทางออกคือการจัดตั้งเครื่องแม่ข่ายอีกเครื่องหนึ่งเพื่อใช้ทำเป็นฐานข้อมูล OLAP การทำเช่นนี้จะปลดเปลื้องภาระของแม่ข่ายธุรกรรมหรือ OLTP จากความหน่วงของคิวรีรายงานได้ทั้งหมด

รายงานแบบ OLAP คือการวิเคราะห์ข้อมูลแบบออนไลน์ (Online Analytical Processing) OLAP ไม่ใช่แค่รายงานตายตัวแบบในกระดาษ แต่เป็นรายงานที่มีพลวัตและมีหลายมิติ ช่วยให้ผู้ใช้ได้รับข้อมูลที่ทันสมัยเพราะเปลี่ยนแปลงไปตามความเป็นจริง (real time) ในลักษณะต่างๆ เช่นตารางแสดงข้อมูลไขว้ (Pivot Table) หรือตารางแบบเมตริกซ์ (Matrix) ตารางรายงานที่ข้อมูลแปรผันได้ตามการป้อนเงื่อนไข (Report Parameter) รายงานที่เจาะลึกได้ (Drill Down) หรือรายงานที่โยงไปยังรายงานย่อยที่มีรายละเอียดอ้างอิงได้ (Drill through) เป็นรายงานบนหน้าจอที่มีปฏิสัมพันธ์กับผู้ใช้ หรือจะพิมพ์ลงกระดาษก็ได้

รายงานแบบ OLAP มักเป็นการวิเคราะห์ข้อมูลกับคลังข้อมูลหรือข้อมูลสะสม (data mining) เพื่อการทำนายแนวโน้ม เพื่อใช้เป็นเครื่องมือช่วยการบริหารและพัฒนากระบวนการต่างๆ ของธุรกิจให้มีประสิทธิภาพมากขึ้น อย่าสับสนระหว่าง OLAP กับ OLTP เพราะอย่างหลังคือการทำธุรกรรมออนไลน์ (Online Transaction Processing) ที่เป็นคนละเรื่องกัน ฐานข้อมูลของงาน OLTP จะมีขนาดเล็กกว่าและมีพลวัตสูง ส่วนฐานข้อมูลของ OLAP จะมีขนาดใหญ่กว่ามากแต่มีพลวัตต่ำหรือถึงกับไม่มีเลย

การใช้เซิฟเวอร์อีกตัวทำเป็น OLAP มีข้อเสียอยู่ที่รายงานจะไม่ใช่ข้อมูลอัพเดตตามเวลาจริง แต่จะมีช่วงล้าสมัยเล็กน้อย ขึ้นอยู่กับว่าเราตั้งให้แม่ข่ายฐานข้อมูล OLTP คัดลอกข้อมูลในฐานข้อมูลมายังแม่ข่าย OLAP ถี่เพียงใด การกำหนดความถี่ต้องพิจารณาอย่างรอบคอบ เพราะถ้าทำถี่เกินไป (คือทุกชั่วโมง) อาจมีผลให้โหลดแม่ข่ายฐานข้อมูล OLTP มากเกินไป แต่ถ้าถี่น้อยไป (ทุกสัปดาห์) รายงานอาจล้าสมัยแล้ว

 

ข้อดีของการทำรายงานด้วย SSRS

ต่อไปนี้เป็นรายการแสดงข้อดีต่างๆ ของการทำรายงานด้วย SSRS

  • ใช้เพลตฟอร์มมาตรฐาน: ไฟล์รายงานเป็นภาษา RDL จึงเป็นเพียงแท็กซ์ไฟล์ (text file) ธรรมดา เปิดด้วยแท็กซ์เอดิเตอร์อะไรก็ได้ หากใช้โปรแกรม MSVS2008 สร้างจะสะดวกมาก เพราะมีเครื่องอำนวยความสะดวกให้หลายอย่าง ไม่ต้องเขียนภาษา RDL ขึ้นเอง
  • ค่าใช้จ่าย: SSRS แถมฟรีมากับ SQL2008 ดังนั้นหากท่านมีใบอนุญาตการใช้งาน SQL2008 ท่านจะสามารถใช้ SSRS ทำรายงานได้โดยไม่มีค่าใช้จ่ายอื่นเพิ่มเติมอีก
  • ดูได้ทั่วโลก: เมื่อสร้างรายงานเสร็จและทำดีพลอยแล้วรายงานจะอยู่ในเว็บเซอฟเวอร์ ผู้ใช้สามารถใช้โปรแกรมเว็บเบราว์เซอร์เปิดดูได้พร้อมกันทุกคนจากทั่วโลก
  • รายงานฝังตัว: ท่านอาจให้ผู้รับเปิดรายงานโดยใช้เว็บเบราว์เซอร์ หรือจะดึงรายงานไปฝังไว้เป็นส่วนหนึ่งของแอพลิเกชันที่ท่านสร้างไว้แล้วให้ผู้ใช้รายงานเปิดจากภายในแอพลิเกชันก็ได้
  • การรับรายงาน: รายงานที่ผู้ใช้เปิดเป็นรายงานสด ข้อมูลในรายงานเป็นข้อมูลที่อัพเดตตามเวลาจริงขณะนั้นๆ หรือท่านสามารถกำหนดให้ SSRS อัพเดตข้อมูลเฉพาะบางช่วงเวลาก็ได้ (เช่นอัพเดตวันละหนตอนตีสามเพราะเป็นเวลาที่ปริมาณการจราจรของข้อมูลคับคั่งน้อยที่สุด)

 

Crystal Report (CR) เป็นโปรแกรมประยุกต์แบบ BI จากบริษัท Business Object ซึ่งมีฐานะเป็นบริษัทลูกของ SAP โปรแกรม CR มีมานานแล้วแต่ไม่เด่นดัง จนกระทั่งไมโครซอฟต์นำมาผนวกไว้กับเครื่องมือพัฒนาโปรแกรมวิสชวลเบสิก ทำให้ CR เป็นที่รู้จักและกลายเป็นมาตรฐาน โดดเด่นกว่าโปรแกรมสร้างรายงานอื่นๆ ที่มีอยู่เป็นจำนวนมาก

ในยุค MS-SQL 7 และ MS-SQL 2000 ผู้ที่ต้องการสร้างรายงานซับซ้อนสวยงามจำเป็นต้องนำ CR มาใช้ร่วมกับ MS-SQL เพราะ SSRS ในสมัยนั้นมีความสามารถที่จำกัด แต่พอถึงยุค SQL2005 และ SQL2008 สถานการณ์ก็เปลี่ยนไป เพราะ SSRS ถูกพัฒนาอย่างต่อเนื่องให้มีประสิทธิภาพสูงขึ้น แม้ SSRS จะมีความสามารถด้อยกว่า CR ในบางด้าน แต่ผู้ใช้ CR ร่วมกับ SQL2008 ก็เริ่มมีจำนวนลดลง เพราะในหลายๆ กรณี SSRS มีความสามารถเพียงพอที่จะตอบสนองความต้องการได้ และที่สำคัญคือผู้ใช้ไม่ต้องจัดซื้อ SSRS เพิ่มเติมเพราะมันถูกผนวกอยู่ใน SQL2008 ผู้ใช้จึงสามารถติดตั้งใช้งาน SSRS ได้ทันทีโดยไม่มีค่าใช้จ่ายเพิ่มเติม

 

Advertisements

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out /  เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out /  เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out /  เปลี่ยนแปลง )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: