คู่มือบทช่วยสอน

โหลดอัตราแลกเปลี่ยนเข้า Power BI ด้วย Power Query

วาง M query ใน Power BI Desktop แปลง JSON เป็นตารางสกุลเงิน และเตรียม scheduled refresh หลัง publish เพื่อให้อัตราแลกเปลี่ยนในรายงานเป็นปัจจุบัน

5 ส.ค. 2569 · 5 min

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

Power Query M · Advanced Editor
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 ตามการใช้งาน

RelativePath ช่วยเลี่ยง dynamic data source

Power BI ต้องเห็น host ที่คงที่ ให้ domain อยู่ใน Web.Contents และวางเฉพาะ endpoint path ใน RelativePath เพื่อให้ refresh หลัง publish ทำงาน

M parameter ไม่ใช่ที่เก็บความลับ

คนที่แก้ PBIX หรือ query อาจเห็นคีย์ได้ วิธีนี้เหมาะกับ workspace ภายในที่ไว้ใจได้ หากแชร์ไฟล์กว้างให้ใช้ proxy ฝั่งเซิร์ฟเวอร์

อัตราสำหรับอ้างอิง

เหมาะกับรายงาน การวิเคราะห์ การวางแผน และการแสดงผล ไม่ใช่ราคาซื้อขายหรือราคาชำระ

คำถาม

Power BI เรียก API อัตราแลกเปลี่ยนโดยตรงได้ไหม?

ได้ Web.Contents ดึง JSON แล้ว Power Query แปลง rates record เป็นตาราง

ทำไมขึ้น dynamic data source?

ให้ host ใน Web.Contents คงที่ และย้าย endpoint ไปไว้ใน RelativePath

เลือก credential แบบไหน?

เลือก Anonymous เพราะ M query ส่งคีย์ผ่าน Authorization header

อ่านต่อ

เริ่มต้นด้วยคีย์ API ฟรี

ส่งคำขอได้ 5,000 ครั้งต่อเดือนด้วยแพ็กเกจฟรี ไม่ต้องใช้บัตรเครดิต

รับคีย์ฟรี