Microsoft SQL Server 2017 Datasheet (4 )

เล่าถึง Microsoft SQL Server 2017 Datasheet พอสังเขป ตอนที่ 4
การนำเอา Microsoft SQL Server 2017 Datasheet มาเล่า และทดลองให้เห็นผ่านตัวอย่างเล็ก ๆ ก็ดำเนินมาถึงตอนสุดท้ายกันแล้วผู้เขียนจะขอเล่าถึงส่วนสุดท้ายใน Datasheet ที่จั่วหัวไว้เป็น “End-to-end mobile BI on any device”
ซึ่งในรูปประกอบนั่นคือการเปรียบเทียบต้นทุนการได้มาของ Modern Reports บนโทรศัพท์มือถือที่ Microsoft ทำได้ถูกกว่า Oracle มาก
รูปดังกล่าวผู้เขียนเห็นมาตั้งแต่ Datasheet ของ Microsoft SQL Server 2016 และตัวเลขไม่ได้ต่างไปจากเดิมเลย

อีกรูปหนึ่งที่ปรากฏใน Datasheet ก็ไม่ต่างจากรูปข้างบนเลย เพราะเคยปรากฏใน Datasheet ของ Microsoft SQL Server 2016 มาแล้วเช่นกัน
โดย Mobile Reporting เป็นคุณสมบัติใหม่ของ SQL Server Reporting Service มาตั้งแต่ Microsoft SQL Server 2016 แล้วนั่นเอง
ผู้เขียนจึงจะขอเล่าในเรื่องของการผนึก Self-service BI และ Enterprise Reporting จนได้ออกมาเป็น Power BI Report Server ซึ่งรองรับทั้ง
- Paginated Report
- Mobile Report
- Power BI Report
การ Deploy ก็ทำได้หลากหลายทั้งจาก Power BI Desktop, Report Builder หรือ Business Intelligence Template จาก SSDT
ผู้เขียนรู้สึกว่าช่วงนี้มีผู้ให้ความสนใจกับ Power BI กันเป็นจำนวนมาก
สังเกตจากหลักสูตรฝึกอบรมของทาง 9Expert ที่เต็มแล้วเต็มอีก อาจเป็นเพราะ Power BI นั้นสามารถทำขั้นตอนทั้ง ETL, Data Model ไปจนถึงออก Report แบบ Visualization จบในเครื่องมือเดียว แถมเรียนรู้ได้ไม่ยากเกินไปนัก
แต่หากต้องมาทำ ETL ผ่าน SQL Server Integration Service (SSIS) เพื่อให้ได้ Data Warehouse Database ขึ้นมาก่อน จากนั้นค่อยดึงข้อมูลจาก Data Warehouse Database ไปสร้าง Data Model ด้วย SQL Server Analysis Service (SSAS) แล้ว ค่อยนำไปออก Report ดูเหมือนขั้นตอนมันจะสลับซับซ้อน และต้องพึ่งพาแผนก IT ทำให้
แต่ถึงอย่างนั้น การได้มาซึ่ง Data Model แล้วจัดเก็บอยู่บนเซิร์ฟเวอร์ ก็ยังเหมาะกับการใช้งานระดับองค์กร เพราะ Data Model คือการหาบรรดาผลรวมตาม Dimensions ต่าง ๆ ไว้ล่วงหน้าแล้ว
ใครที่อยากจะสร้าง Report ก็มาดึงเอาผลรวมที่จัดเก็บอยู่บนเซิร์ฟเวอร์ไปออก Report ได้เลย
ต่างจากการสร้าง Data Model อยู่บน Power BI ที่มักใช้เครื่อง Desktop ในการประมวลผลเพื่อให้ได้ Data Model ขึ้นมา
อีกทั้งยังไม่มีกลไก Process Update เหมือนใน SSAS เมื่อมีข้อมูลใน Data Warehouse Database เพิ่มเติม ก็จะประมวลผลใหม่ทั้งหมด
ผู้เขียนอยากให้ลองพิจารณาในมุมนี้ดู คือยังใช้ SSIS ในการ ETL เพื่อให้ได้ Data Warehouse Database และยังใช้ SSAS ทำการสร้าง Data Model ในระดับองค์กรอยู่เช่นเดิม
แต่สำหรับ Report อาจจะหันเหไปใช้ Power BI Report ที่เชื่อมต่อไปยัง SSAS แบบ Connect Live น่าจะเป็นแนวทางที่ดีมาก
Power BI Report Server
ปัจจุบัน Microsoft SQL Server 2017 ไม่มี Feature ของ SQL Server Reporting Service (SSRS) ให้เลือกติดตั้งแล้ว อาจเป็นเพราะมี Power BI Report Server เกิดขึ้นมาเป็นตัวเลือกก็ได้ (อันนี้ผู้เขียนเดาเอา)อีกทั้ง Power BI Report Server ยังครอบคลุมทุกความสามารถของ SSRS อีกด้วย แต่การที่จะใช้งาน Power BI Report Server จำเป็นต้องมี License ที่ได้มาจาก 2 กรณี
- License ของ Microsoft SQL Server Enterprise Edition ประเภท Software Assurance
- License ของ Power BI ประเภท Premium
ผู้อ่านสามารถดาวน์โหลด Power BI Report Server แบบ Evaluation มาทดลองใช้ได้โดยไปที่ https://aka.ms/pbireportserver

แนะนำให้ดาวน์โหลดทั้ง Power BI Report Server และ Power BI Desktop สำหรับ Power BI Report Server เพราะ Power BI Desktop ทั่วไปยังไม่สามารถ Deploy ลงบน Power BI Report Server ได้
การติดตั้งและการตั้งค่า Power BI Report Server
1.การติดตั้งหลังจากดาวน์โหลด PowerBIReportServer.exe จาก https://aka.ms/pbireportserver ให้ติดตั้งโดยใช้ค่าตั้งต้นไปจนเสร็จสิ้น เพราะจะไม่มีการตั้งค่าใด ๆ ขณะติดตั้ง2.เมื่อติดตั้งเสร็จจะมีกรอบโต้ตอบถามว่าจะเข้าสู่การตั้งค่าเลยหรือไม่ ให้เลือกเข้าสู่การตั้งค่าเลย
แต่หากต้องการตั้งค่าภายหลังสามารถเรียกใช้ผ่านเครื่องมือชื่อ “Report Server Configuration Manager”
เมื่อปรากฏกรอบโต้ตอบ The Report Server Configuration Connection ตามภาพ ให้กด Connect

3.ขั้นตอนแรกจะเป็นการตั้งค่า Service Account สำหรับ Report Server ผู้เขียนเลือกที่จะใช้ Domain User ชื่อ <DomainName>\ServiceAcct มาทำการ Start Service ตามภาพ
จากนั้นกดปุ่ม Apply มุมขวาล่าง

4.ต่อไปเป็นการตั้งค่า Web Service URL ผู้เขียนกำหนดชื่อ Virtual Directory เป็น ReportServer_SQL2 ผู้อ่านสามารถกำหนดเป็นค่าอื่นได้
จากนั้นกดปุ่ม Apply มุมขวาล่าง จะปรากฏ URL ที่มาจาก Virtual Directory ตามภาพ
สามารถใช้ URL ดังกล่าวได้หลายกรณี เช่น ใช้เป็น URL ในการ Deploy ตัว Report จาก SSDT (Visual Studio)

5. ขั้นตอนต่อไปเป็นการตั้งค่า Database หากเป็นการตั้งค่าครั้งแรกจะไม่ปรากฏชื่อ Instance ของ Database Engine
และชื่อ Database ที่ใช้จัดเก็บข้อมูลของ Report Server รวมไปถึง Credential ที่ใช้เข้าถึง Report Server ก็ไม่ปรากฎเช่นกัน

ให้กดไปที่ปุ่ม Change Database จะปรากฏกรอบโต้ตอบ Change Database ตามภาพ จากนั้นให้เลือก Create a new report server database ทำการกำหนด
- Instance ของ Database Engine ที่จะใช้จัดเก็บ Database ของ Report Server
- ชื่อ Database ของ Report Server ที่จะถูกสร้างขึ้น
- Credential ที่ใช้เข้าถึง Report Server

ผู้เขียนขอไม่จับภาพหน้าจอทุกขั้นตอน แต่จะแสดงผลลัพธ์หลังจากตอบคำถาม Wizard ไปจนเสร็จสิ้น ดังภาพ

6. ขั้นตอนสุดท้ายเป็นการตั้งค่า Web Portal URL ผู้เขียนกำหนดชื่อ Virtual Directory เป็น Reports_SQL2 ผู้อ่านสามารถกำหนดเป็นค่าอื่นได้ จ
ากนั้นกดปุ่ม Apply มุมขวาล่าง จะปรากฏ URL ที่มาจาก Virtual Directory ตามภาพ ผู้อ่านสามารถกดไปที่ลิ้งก์ของ URL เพื่อเข้าใช้ Web Portal ได้เลย

ทดลองใช้ Power BI Report Server
ผู้เขียนจะทำการทดลองผ่าน Power BI Desktop โดยเลือก Data Connectivity mode ใน 3 รูปแบบดังนี้
- Import mode ต่อเชื่อมไปยัง Data Warehouse Database
- DirectQuery mode ต่อเชื่อมไปยัง Data Warehouse Database
- Connect live mode ต่อเชื่อมไปยัง SSAS Database (Data Model)
เจตนาของผู้เขียนคือต้องการแสดงให้เห็นการตอบสนองของ Power BI Desktop ต่อโหมดการเชื่อมต่อแต่ละแบบ
กรณี Import Mode
เมื่อใช้ Get Data จาก Power BI Desktop เชื่อมต่อไปยัง Data Source เช่น Microsoft SQL Server (Data Engine)
ผู้เขียนเลือกเชื่อมต่อไปยังฐานข้อมูลแบบ Data Warehouse Database ชื่อ AdventureworksDW ซึ่งเป็นฐานข้อมูลตัวอย่างของ Microsoft
แล้วเลือกโหมด Import โดยลักษณะการทำงานในโหมดนี้คือ
ผู้เขียนเลือกเชื่อมต่อไปยังฐานข้อมูลแบบ Data Warehouse Database ชื่อ AdventureworksDW ซึ่งเป็นฐานข้อมูลตัวอย่างของ Microsoft
แล้วเลือกโหมด Import โดยลักษณะการทำงานในโหมดนี้คือ
- ข้อมูลในแต่ละ Tables ที่ถูกเลือก จะถูกนำเข้า Power BI cache
- เมื่อสร้าง Visualization ผ่าน Power BI Desktop ข้อมูลภายใน Power BI cache จะถูกสืบค้น
- Visualization ที่สร้างไว้จะไม่สะท้อนข้อมูลที่ปรับปรุงใหม่ใน Data Source จำเป็นต้องทำการ Refresh ซึ่งก็คือ การนำเข้าข้อมูลใหม่หมดอีกครั้ง

โหมดนี้มักถูกเลือกใช้กันบ่อยทั้งที่ประสิทธิภาพไม่ค่อยน่าพอใจนัก ตั้งแต่ตอนนำเข้าข้อมูลหากมีปริมาณมาก ๆ ก็จะเสียเวลานานมาก
อีกทั้งเมื่อต้อง Refresh ก็จะเสียเวลาไม่แพ้กัน ทั้งที่มีการเปลี่ยนแปลงในข้อมูลต้นทางไม่มาก
ผู้อ่านสามารถใช้งานได้ทั้งในมุมมองของ Report View, Data View และ Relationships View
- ในส่วนของ Report View เพื่อสร้าง Visualization นั้นผู้เขียนไม่ขออภิปราย
- แต่สำหรับมุมมองของ Data View นั้นใช้สำหรับสำรวจข้อมูลที่อยู่ภายใน Power BI cache ที่มีข้อมูลที่นำเข้า
- สำหรับมุมมองของ Relationships View ใช้สำหรับจัดการความสัมพันธ์ภายใน Data Model ของเรา
เป็นเครื่องแสดงให้เห็นว่า เราต้อง ETL ข้อมูลเอง สร้าง Data Model เอง ภายใน Power BI Desktop

กรณี DirectQuery Mode
เมื่อใช้ Get Data จาก Power BI Desktop เชื่อมต่อไปยัง Data Source เช่น Microsoft SQL Server (Data Engine)ผู้เขียนเลือกเชื่อมต่อไปยังฐานข้อมูลแบบ Data Warehouse Database ชื่อ AdventureworksDW ซึ่งเป็นฐานข้อมูลตัวอย่างของ Microsoft
แล้วเลือกโหมด DirectQuery โดยลักษณะการทำงานในโหมดนี้คือ
- ข้อมูลในแต่ละ Tables ที่ถูกเลือก จะถูกไม่ถูกนำเข้าจริง
- เมื่อสร้าง Visualization ผ่าน Power BI Desktop การสืบค้นข้อมูลที่จำเป็นจาก Data Source จะเกิดขึ้น เวลาตอบสนองของ Visualization จะขึ้นอยู่กับประสิทธิภาพของระบบของ Data Source\
- การ Refresh เกิดขึ้นเท่าที่จำเป็นสำหรับแต่ละ Visuals

ผู้อ่านสามารถใช้งานในมุมมอง Report View และ Relationships View ได้เท่านั้น เพราะเราไม่ได้ดึงข้อมูลมาลงใน Power BI cache
จึงไม่มีมุมมองสำหรับสำรวจข้อมูลที่อยู่ภายใน Power BI cache แต่มุมมอง Relationships View ยังคงอยู่ และยังต้องจัดการความสัมพันธ์ภายใน Data Model ของเราเองอยู่
หากสังเกตในแท็บ Fields ด้านขวามือ จะเห็นว่ายังไม่มีการสร้าง Measurement และ Hierarchies ในแต่ละ Dimensions แต่อย่างใด
เป็นเครื่องแสดงให้เห็นว่า เรายังต้อง ETL ข้อมูลเอง สร้าง Data Model เอง ภายใน Power BI Desktop

กรณี Connection Live Mode
เมื่อใช้ Get Data จาก Power BI Desktop เชื่อมต่อไปยัง Data Source ต้องเลือกเชื่อมต่อไปยังฐานข้อมูลของ SQL Server Analysis Service (SSAS) เท่านั้นเพื่อเข้าถึง Data Model ที่สร้างเสร็จสมบูรณ์แล้วใน SSAS

ผู้เขียนได้สร้างฐานข้อมูลชื่อ Adventure Works OLAP ไว้บน SSAS และมี Cube ชื่อ Sales อยู่ภายใน
เมื่อเชื่อมต่อไปยังฐานข้อมูลสำเร็จจะพบกับเพจ Navigator ซึ่งสามารถสำรวจข้อมูลของ Dimensions และ Measures ที่อยู่ภายใน Cube ดังภาพ

ผู้อ่านสามารถใช้งานในมุมมอง Report View ได้เท่านั้น Data Model ได้ถูกสร้างเอาไว้เรียบร้อยแล้วใน SSAS จึงเป็นการดึงข้อมูลมาสร้าง Visualization เพียงเท่านั้น
หากสังเกตในแท็บ Fields ด้านขวามือ จะเห็นว่ามีทั้ง Measurement และ Hierarchies ในแต่ละ Dimensions ไว้สมบูรณ์แล้ว

ผู้เขียนค่อนข้างชอบโหมดการเชื่อมต่อแบบนี้เป็นพิเศษ และเป็นการใช้ทั้ง Microsoft SQL Server ในส่วนของ Data Engine, SQL Server Integration Service และ SQL Server Analysis Service ร่วมกับ Power BI
โดยการเตรียมข้อมูลและการสร้าง Data Model ให้เป็นความสามารถของ Microsoft SQL Server ส่วนการสร้าง Modern Report ให้ Power BI ทำไป
น่าจะตอบโจทย์การใช้งานในองค์กรมากกว่าในด้านประสิทธิภาพและความเป็นเอกภาพของ Data Model อีกทั้งยังสามารถ Deploy ตัว Report ของ Power BI ลงบน Power BI Report Server บน On-promises ได้อีกด้วย
ทดลองใช้ Power BI Report Server
ผู้เขียนต่อยอดจากการเชื่อมต่อในโหมด Connect Live โดยนำเอา Measures และ Hierarchies ไปใช้ดังภาพซึ่งผู้เขียนขอบรรยายว่าตอนนำไปสร้าง Visualization มันพรึบพรับทันใจกว่าการเชื่อมต่อโหมดอื่น ๆ เพราะผลรวมต่าง ๆ ทำเสร็จไว้ล่วงหน้าใน SSAS จนหมดแล้ว

การ Deploy ตัว Report ไปลง Power BI Report Server นั้นทำเพียงไปที่เมนู File เลือก Save As จะปรากฎ Powwr BI Report Server ให้เลือก

หากเป็นการใช้งานครั้งแรกให้ป้อน URL ของ Web Portal ลงไปดังภาพ จากนั้นเลือก Folder ที่เตรียมไว้ ตั้งชื่อ Report ตามต้องการ
แค่นี้ก็จะเป็นการ Deploy ตัว Report ลงใน Power BI Report Server แล้ว ผู้เขียนขอไม่แสดงทุกหน้าจอให้เห็น แต่ก็ไม่น่าจะทำความเข้าใจยาก

ผู้เขียนแสดงให้เห็นหน้า Web Portal ของ Power BI Report Server ให้เห็นดังภาพ เราสามารถใช้งาน Power BI Report ได้จากเซิร์ฟเวอร์ On-promises ได้เป็นอย่างดี

สรุป
เราสามารถสร้าง Modern Report ได้ทั้งจาก Mobile Report ที่มีมาตั้งแต่ Microsoft SQL Server 2016 แล้ว (หลังจากเข้าซื้อ DATAZEN) และจาก Power BI Report
โดย Report ทั้งสองแบบนี้ถูกออกแบบให้แสดงผลบน Layout ของโทรศัพท์มือถือได้เป็นอย่างดี อีกทั้งยังสามารถใช้งาน Data Model ระดับ Enterprise จาก SSAS ได้ทั้งคู่
(สำหรับ Mobile Report จำเป็นต้องสร้าง Shared Dataset เชื่อมต่อไปยัง Data Model บน SSAS ก่อน)
ทำให้การแสดงผลมีประสิทธิภาพและยังมีความเป็นเอกภาพของ Data Model ไม่กระจายไปอยู่ตาม Dataset บน Power BI (ไฟล์นามสกุล .pbix)
และไม่เป็นเอกภาพ ผู้เขียนยังคงยืนยันว่า Power BI ไม่ได้เข้ามาแทนที่ Enterprise BI อย่าง SSIS และ SSAS แต่อย่างใด แต่เข้ามาเสริมทำให้ผลิตภัณฑ์ด้าน BI จาก Microsoft แข่งแกร่งขึ้น
โดย Report ทั้งสองแบบนี้ถูกออกแบบให้แสดงผลบน Layout ของโทรศัพท์มือถือได้เป็นอย่างดี อีกทั้งยังสามารถใช้งาน Data Model ระดับ Enterprise จาก SSAS ได้ทั้งคู่
(สำหรับ Mobile Report จำเป็นต้องสร้าง Shared Dataset เชื่อมต่อไปยัง Data Model บน SSAS ก่อน)
ทำให้การแสดงผลมีประสิทธิภาพและยังมีความเป็นเอกภาพของ Data Model ไม่กระจายไปอยู่ตาม Dataset บน Power BI (ไฟล์นามสกุล .pbix)
และไม่เป็นเอกภาพ ผู้เขียนยังคงยืนยันว่า Power BI ไม่ได้เข้ามาแทนที่ Enterprise BI อย่าง SSIS และ SSAS แต่อย่างใด แต่เข้ามาเสริมทำให้ผลิตภัณฑ์ด้าน BI จาก Microsoft แข่งแกร่งขึ้น