ใช้ powershell script เพื่อดาวน์โหลด PBIX ไฟล์จาก Power BI Service โดยอัตโนมัติ

PanaEk Warawit
2 min readFeb 21, 2021

--

บทความนี้จะเล่าวิธีการดาวน์โหลดไฟล์ pbix จาก Power BI service แล้วต่อด้วยวิธีการ automate ขั้นตอนนี้โดยผ่านการใช้ powershell

Photo by Sigmund on Unsplash

โจทย์มีอยู่ว่า เรามี 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 ตามภาพ

ตั้งเวลาให้ทำงานทุกวันก็เป็นอันเรียบร้อย

Credit:

--

--

No responses yet