Power BI มี connector ที่ต้องใช้อยู่แล้ว สร้าง Blank Query แล้วเรียกด้วย Web.Contents โดยคง host ไว้คงที่และย้าย endpoint ไปไว้ใน RelativePath เพื่อให้ Power BI Service ระบุแหล่งข้อมูลตอน refresh ได้
- วาง M code ใน Advanced Editor
- คง
https://api.exchangerate.devไว้และใช้RelativePath - ผลลัพธ์มีหนึ่งแถวต่อสกุลเงิน พร้อม source และเวลาอัปเดต
- เลือก credential แบบ Anonymous เพราะคีย์ถูกส่งใน header
- ผู้แก้ไข PBIX อาจเห็น query ได้ หากแจกไฟล์กว้างควรใช้ server-side proxy
สร้าง Blank Query
สร้างคีย์ฟรี ใน Power BI Desktop เลือก Get data → Blank query แล้วเปิด View → Advanced Editor ใน Power Query
วาง M query
let ApiKey = "exr_live_replace_with_your_key_here", Base = "USD", Symbols = "EUR,GBP,JPY", Response = Json.Document( Web.Contents( "https://api.exchangerate.dev", [ RelativePath = "v1/latest/" & Base, Query = [symbols = Symbols], Headers = [Authorization = "Bearer " & ApiKey] ] ) ), Rates = Record.ToTable(Response[rates]), Renamed = Table.RenameColumns( Rates, {{"Name", "currency"}, {"Value", "rate"}} ), WithBase = Table.AddColumn(Renamed, "base", each Response[base], type text), WithSource = Table.AddColumn(WithBase, "source", each Response[source], type text), WithUpdatedAt = Table.AddColumn( WithSource, "data_updated_at", each DateTimeZone.FromText(Response[data_updated_at]), type datetimezone )in WithUpdatedAtเปลี่ยนคีย์ตัวอย่าง กด Done และตั้งชื่อ query ว่า FxRates ตัวอย่างข้อมูลควรแสดง EUR, GBP และ JPY แยกเป็นคนละแถว
ตรวจชนิดข้อมูล
ตั้ง currency, base, source เป็น Text, rate เป็น Decimal number และ data_updated_at เป็น Date/Time/Timezone จากนั้นกด Close & Apply
Publish และตั้ง scheduled refresh
ใน Power BI Service เปิด credential ของ https://api.exchangerate.dev แล้วเลือก Anonymous เพราะ M query ส่งคีย์ใน Authorization header อยู่แล้ว จากนั้นตั้งรอบ refresh ตามการใช้งาน
Power BI ต้องเห็น host ที่คงที่ ให้ domain อยู่ใน Web.Contents และวางเฉพาะ endpoint path ใน RelativePath เพื่อให้ refresh หลัง publish ทำงาน
M parameter ไม่ใช่ที่เก็บความลับ
คนที่แก้ PBIX หรือ query อาจเห็นคีย์ได้ วิธีนี้เหมาะกับ workspace ภายในที่ไว้ใจได้ หากแชร์ไฟล์กว้างให้ใช้ proxy ฝั่งเซิร์ฟเวอร์
เหมาะกับรายงาน การวิเคราะห์ การวางแผน และการแสดงผล ไม่ใช่ราคาซื้อขายหรือราคาชำระ