ใช้ powershell script เพื่อดาวน์โหลด PBIX ไฟล์จาก Power BI Service โดยอัตโนมัติ
บทความนี้จะเล่าวิธีการดาวน์โหลดไฟล์ pbix จาก Power BI service แล้วต่อด้วยวิธีการ automate ขั้นตอนนี้โดยผ่านการใช้ powershell
โจทย์มีอยู่ว่า เรามี Power BI Report อยู่บน Power BI service ที่ลูกค้าเข้าถึงได้ มีการทำ data flow ให้ข้อมูลบน Power BI service อัพเดตโดยอัตโนมัติทุกวันอยู่แล้ว ทีนี้ลูกค้าเกิดอยากได้ไฟล์ pbix เพื่อเอาไปปรับแต่งเอง บน Power BI Desktop
ดาวน์โหลดไฟล์ pbix จาก Power BI service
ทุกคนคงรู้อยู่แล้วว่า เราสามารถ publish รายงานจาก Power BI Desktop ไปยัง Power BI service ได้ เราสามารถทำในทางกลับกันได้ คือเราสามารถดาวน์โหลดรายงานลงมาเป็นไฟล์ pbix เพื่อเปิดใช้งานกับ Power BI Desktop ได้ แต่ account ที่ใช้ จะต้องมีสิทธิ์ในการ edit รายงานนั้น
วิธีการก็ตามภาพเลยครับ เมื่อเปิดรายงานที่ต้องการมาแล้ว ก็เลือกเมนู File คำสั่ง Download Report
รายละเอียดเพิ่มเติม Download a report from the Power BI service to Power BI Desktop
ปรับขั้นตอนให้เป็นอัตโนมัติ
ถ้านานๆ ดาวน์โหลด pbix มาที ก็คงไม่กระไร แต่ถ้าต้องทำทุกวัน ควรหาวิธี automate ขั้นตอนนี้ วิธีการก็คือ เราจะใช้ Rest API ของ Power BI service แล้วเรียกใช้ผ่าน Powershell
ติดตั้ง Power BI module บน Powershell
ทีม Power BI ได้สร้าง Power BI module สำหรับ Powershell แต่ต้องทำการติดตั้งก่อน โดยเปิด powershell ด้วย Admin privilege แล้วเรียกคำสั่งนี้
Install-Module -Name MicrosoftPowerBIMgmt
หา Report Id ที่ต้องการ
หลังจากนั้นก็ไปหา Report Id ที่เราต้องการดาวน์โหลด โดยการสังเกตดูจาก URL บน address bar ของเบราวเซอร์ตอนเปิดรายงานบน Power BI service
เขียน script powershell
แล้วก็เอาข้อมูลเหล่านี้มาประกอบกันเขียนเป็น powershell script (นามสกุล .ps1) ตามนี้
$username = “YOUREMIAL@YOURDOMAIN.com”
$password = ConvertTo-SecureString “YOURPASSWORD” -asplaintext -force
$credentials = New-Object System.Management.Automation.PSCredential $username, $password
Login-PowerBI -Credential $credentials$date = (Get-Date).ToString(“yyyyMMdd”)
$ReportId = “ํYOURREPORTID”
$OutFile = “D:\YOURFOLDER\YOUREPORTNAME_$date.pbix”Invoke-PowerBIRestMethod -Method GET -Url https://api.powerbi.com/v1.0/myorg/reports/${ReportId}/Export -ContentType “application/zip” -OutFile $OutFile
เปลี่ยนค่า YOUREMAIL@YOURDOMAIN.com, YOURPASSWORD, YOURREPORTID, YOURFOLDER กับ YOURREPORTNAME เป็นค่าของคุณเอง
ไฟล์ผลลัพธ์ที่ได้จะเก็บไว้ที่ folder YOURFOLDER ที่ระบุ โดยมีการตั้งชื่อไฟล์ให้มีวันที่เป็นส่วนหนึ่งของชื่อไฟล์
เอาไปทำ automate ด้วย Task Scheduler
เมื่อทดลอง script เรียบร้อยแล้ว ก็เอาไปผูกกับ Task Scheduler บน Windows มีเคล็ดลับเล็กน้อยในการสร้าง task เพื่อให้สามารถเรียก Powershell script ได้ โดยในส่วนของ Action ให้เลือกเป็น Start a program แล้วเลือก powershell
เป็น program ตามด้วย -File
และ ps1 script เป็น add arguments ตามภาพ
ตั้งเวลาให้ทำงานทุกวันก็เป็นอันเรียบร้อย