คู่มือ Power BI
ฉบับครบเครื่อง
ตั้งแต่ติดตั้ง ไปถึง DAX ขั้นสูง, RLS, Power Query และการ Publish — พร้อมตัวอย่าง DAX สำหรับ ILPI Dashboard โดยเฉพาะ
สารบัญ — เลือกหัวข้อได้เลย
การติดตั้ง Power BI Desktop
Power BI Desktop เป็นแอป Windows ฟรี — รองรับ Windows 10 (1903+) และ Windows 11, ต้องการ RAM อย่างน้อย 2 GB (แนะนำ 8 GB+)
วิธีติดตั้ง
Microsoft Store (แนะนำ)
อัปเดตอัตโนมัติ — ค้นหา "Power BI Desktop" ใน Microsoft Store แล้วคลิก Install ได้เลย
Download จาก Microsoft
ดาวน์โหลด .msi จาก aka.ms/pbidesktopstore เหมาะกับ Enterprise ที่ต้องจัดการ Version
System Requirements
| ส่วนประกอบ | ขั้นต่ำ | แนะนำ |
|---|---|---|
| OS | Windows 10 (1903) 64-bit | Windows 11 64-bit |
| CPU | 1 GHz 64-bit | Multi-core 2.5 GHz+ |
| RAM | 2 GB | 16 GB+ |
| Storage | 1 GB | SSD, 10 GB+ free |
| Display | 1024×768 | 1920×1080 หรือสูงกว่า |
| .NET | .NET Framework 4.6.1 | .NET 6+ |
การตั้งค่าหลังติดตั้ง
Sign in ด้วย Microsoft Account
File → Sign in → ใช้ Microsoft/Work/School account เพื่อ Publish ขึ้น Power BI Service ได้ (ไม่บังคับถ้าใช้ Desktop เท่านั้น)
ตั้งค่า Language และ Regional Format
File → Options → Regional Settings → เลือก Locale (Thai) เพื่อแสดงวันที่และตัวเลขถูกรูปแบบ
เปิด Preview Features ที่ต้องการ
File → Options → Preview features → เปิดฟีเจอร์ใหม่ ๆ เช่น On-object Interaction, Enhanced tooltips
ตั้งค่า DirectQuery / Import Mode Default
File → Options → Data Load → เลือก Default Mode สำหรับการนำเข้าข้อมูลใหม่
อัปเดตทุกเดือน: Microsoft ออก Power BI Desktop Version ใหม่ทุกเดือน (เช่น June 2024, July 2024) ควรอัปเดตสม่ำเสมอเพื่อรับฟีเจอร์ใหม่และ Bug fixes — ตรวจสอบเวอร์ชันที่ Help → About
ส่วนประกอบหน้าจอ
ทำความรู้จักกับทุกส่วนของ Power BI Desktop ก่อนเริ่มสร้างรายงาน
3 View หลัก (แถบซ้ายมือ)
Report View
พื้นที่สร้าง Dashboard, วาง Visual, จัดหน้า — ใช้งานหลัก 80% ของเวลา
Table View (Data View)
ดูข้อมูลดิบในรูปแบบตาราง ตรวจสอบ Row, สร้าง Calculated Column
Model View
จัดการ Relationships ระหว่าง Tables, ดู Schema, ตั้ง Cardinality
ส่วนประกอบของ Report View
Ribbon (แถบเครื่องมือบนสุด)
แบ่งเป็น Tab: Home, Insert, Modeling, View, Optimize, Help — แต่ละ Tab มีเครื่องมือที่เกี่ยวข้องรวมกัน
Report Canvas (กลาง)
พื้นที่วาง Visual ขนาด Default 1280×720 px (16:9) — ลาก Visual วางตำแหน่งได้อิสระ
Visualizations Pane (ขวา)
เลือกประเภท Visual, ตั้งค่า Fields (Axis, Values, Legend ฯลฯ), ปรับ Format
Data/Fields Pane (ขวาสุด)
รายการ Tables, Columns, Measures ทั้งหมด ลากมาวางใน Canvas หรือ Visual ได้
Filters Pane (ขวา)
Filter ระดับ Visual, Page, Report — ซ่อนหรือล็อคได้สำหรับผู้ดู
Page Tabs (ล่างสุด)
แท็บหน้าต่าง ๆ ในรายงาน เพิ่ม/ลบ/เปลี่ยนชื่อ/ซ่อนหน้าได้ คลิกขวาเพื่อดูตัวเลือก
Ribbon Tabs สำคัญ
| Tab | เครื่องมือหลัก |
|---|---|
| Home | Get data, Refresh, New visual, Text box, Transform data (Power Query) |
| Insert | New page, Visuals, AI Visuals, Text box, Button, Shape, Image, Q&A |
| Modeling | New measure, New column, New table, Manage relationships, Calculations group |
| View | Themes, Page view, Show/hide panes, Sync slicers, Performance analyzer |
| Optimize | Optimization presets, Pause visuals, Refresh query plan |
| Help | Guided learning, Community, Keyboard shortcuts, About |
Get Data & Connectors
Power BI เชื่อมต่อได้กับแหล่งข้อมูลกว่า 100+ ประเภท ตั้งแต่ File, Database, Online Service ไปจนถึง Azure
วิธีนำเข้าข้อมูล
คลิก Home → Get data หรือ Get data → More… เพื่อดู Connector ทั้งหมด
หมวดหมู่ Connectors
📁 File
Excel, CSV/Text, XML, JSON, PDF, Parquet, SharePoint Folder — นำเข้าไฟล์ Local หรือ Network
🗄️ Database
SQL Server, MySQL, PostgreSQL, Oracle, IBM Db2, Snowflake, SAP HANA, Teradata, Access
☁️ Microsoft / Azure
Azure SQL, Azure Synapse, Azure Data Lake, Dataverse, Dynamics 365, SharePoint, OneDrive
🔌 Online Services
Google Analytics, Salesforce, GitHub, LinkedIn, Zendesk, Adobe Analytics, Facebook Ads
🌐 Web & API
Web URL (HTML Table), OData Feed, REST API, ODBC, OLEDB
🤖 Certified Connectors
Partner Connectors ที่ผ่านการรับรอง: Domo, Jira, Stripe, HubSpot, QuickBooks
Import Mode vs DirectQuery vs Live Connection
| Mode | วิธีการ | ข้อดี | ข้อจำกัด |
|---|---|---|---|
| Import | คัดลอกข้อมูลเข้า .pbix | เร็วมาก, ใช้ DAX เต็มรูปแบบ | ข้อมูลอาจไม่ Real-time, ขนาดไฟล์จำกัด |
| DirectQuery | Query Database ทุกครั้งที่ดู | ข้อมูล Real-time, ไม่จำกัดขนาด | ช้ากว่า, DAX บางตัวใช้ไม่ได้ |
| Live Connection | เชื่อมตรงกับ Analysis Services | Real-time, Model ใช้ร่วมกันได้ | ไม่สามารถสร้าง Model ใน Desktop |
| Composite Model | ผสม Import + DirectQuery | ยืดหยุ่นสูงสุด | ซับซ้อน, ต้องออกแบบดี |
แนะนำ: ใช้ Import Mode เป็น Default สำหรับข้อมูลขนาดเล็ก-กลาง (ใต้ 1GB) เพื่อประสิทธิภาพสูงสุด สลับ DirectQuery เฉพาะเมื่อต้องการ Real-time หรือข้อมูลใหญ่มาก
Power Query Editor
Power Query คือ ETL Engine ใน Power BI ใช้ทำความสะอาด แปลง และจัดรูปแบบข้อมูลก่อนโหลดเข้า Model — เขียน M Language ได้ด้วย
เปิด Power Query ได้จาก Home → Transform data — ทุกขั้นตอนที่ทำจะถูกบันทึกเป็น Steps ใน Applied Steps panel (ขวามือ) สามารถแก้ไขหรือลบทีหลังได้
การทำความสะอาดข้อมูล (Common Transforms)
ลบ / แก้ไขชื่อ Column
คลิกขวาที่ Column Header → Rename, Remove columns, Duplicate column, Reorder
เปลี่ยน Data Type
คลิกไอคอน Type ซ้ายของชื่อ Column → เลือก Text, Whole Number, Decimal, Date, Boolean ฯลฯ
ลบ Null / Error
Home → Remove rows → Remove blank rows / Remove errors — หรือ Filter แล้วยกเว้น null
Split Column
Transform → Split column → By delimiter / By number of characters / By position
Merge Queries (JOIN)
Home → Merge queries → เลือก Left/Right/Inner/Full outer join ตาม Key Column
Append Queries (UNION)
Home → Append queries → รวมหลาย Table ที่มี Schema เดียวกัน (เพิ่ม Rows)
Pivot / Unpivot
Transform → Pivot column (Wide to Long) หรือ Unpivot columns (Long to Wide) — สำคัญมากสำหรับข้อมูล Excel
Group By
Transform → Group by → รวม Row ตาม Category, หา Sum/Average/Count ต่อ Group
Custom Column ด้วย M Language
Add Column → Custom column → เขียนสูตร M ได้เต็มที่
// ตัวอย่าง Custom Column — Profit Margin % if [Revenue] = 0 then 0 else ([Revenue] - [Cost]) / [Revenue] * 100 // Conditional Text if [Country] = "Thailand" then "ในประเทศ" else "ต่างประเทศ" // แปลง Text เป็น Date Date.FromText([DateText], [Format="yyyyMMdd"]) // Extract Year จาก Date Date.Year([OrderDate])
Advanced Editor (M Script เต็มรูปแบบ)
Home → Advanced editor — ดู/แก้ไข M Script ทั้งหมดของ Query
let Source = Excel.Workbook(File.Contents("C:\Data\Sales.xlsx"), null, true), Sales_Sheet = Source{[Item="Sales",Kind="Sheet"]}[Data], Promoted_Headers = Table.PromoteHeaders(Sales_Sheet, [PromoteAllScalars=true]), Changed_Types = Table.TransformColumnTypes(Promoted_Headers,{ {"OrderDate", type date}, {"Revenue", type number}, {"Quantity", type number} }), Filtered_Rows = Table.SelectRows(Changed_Types, each [Revenue] > 0), Added_Margin = Table.AddColumn(Filtered_Rows, "Margin%", each ([Revenue] - [Cost]) / [Revenue] * 100, type number) in Added_Margin
Data Model & Relationships
Data Model ที่ดีคือหัวใจของ Power BI — ออกแบบ Star Schema ให้ถูกต้องเพื่อให้ DAX ทำงานได้ถูกและเร็ว
Star Schema vs Snowflake Schema
Star Schema (แนะนำ)
Fact Table ตรงกลาง เชื่อมกับ Dimension Tables โดยตรง — เร็ว เข้าใจง่าย DAX ทำงานสมบูรณ์
Snowflake Schema
Dimension ซ้อน Dimension — ลด Redundancy แต่ทำให้ DAX ซับซ้อนและช้ากว่า ควรหลีกเลี่ยง
การสร้าง Relationship
ไปที่ Model View (ไอคอนกราฟ ด้านซ้าย)
เห็น Diagram แสดง Table ทั้งหมด Power BI อาจตรวจจับ Relationship อัตโนมัติ
ลาก Column ใน Table หนึ่งไปวางที่ Column ใน Table อื่น
หรือ Modeling → Manage relationships → New
กำหนด Cardinality
Many-to-one (*:1) — บ่อยที่สุด | One-to-one (1:1) | Many-to-many (*:*) — ต้องระวัง
กำหนด Cross-filter direction
Single (ทางเดียว — แนะนำ) หรือ Both (ทั้งสองทาง — อาจมีปัญหา Ambiguity)
Date Table — สิ่งที่ขาดไม่ได้
สำคัญมาก: ทุกรายงานที่มีการวิเคราะห์ตามเวลาต้องมี Date Table แยกต่างหาก และ Mark ว่าเป็น Date Table เพื่อให้ Time Intelligence DAX ทำงานถูกต้อง
Visuals ทุกประเภท
Power BI มี Built-in Visuals กว่า 30 ประเภท และ Custom Visuals จาก AppSource อีกหลายร้อยแบบ
Built-in Visuals ครบชุด
| หมวด | Visual | เหมาะสำหรับ |
|---|---|---|
| Bar & Column | Clustered Bar Chart | เปรียบเทียบ Category แนวนอน |
| Stacked Bar Chart | เปรียบเทียบ + ส่วนประกอบ แนวนอน | |
| 100% Stacked Bar | สัดส่วน % แนวนอน | |
| Clustered Column Chart | เปรียบเทียบ Category แนวตั้ง | |
| Stacked Column | เปรียบเทียบ + ส่วนประกอบ แนวตั้ง | |
| Line & Area | Line Chart | แนวโน้มตามเวลา |
| Area Chart | ปริมาณสะสมตามเวลา | |
| Line & Stacked Column | Combo: แนวโน้ม + เปรียบเทียบ | |
| Pie & Donut | Pie Chart | สัดส่วน ≤5 หมวด |
| Donut Chart | สัดส่วนพร้อมตัวเลขกลาง | |
| Treemap | สัดส่วนลำดับชั้น (Hierarchical) | |
| Funnel | ขั้นตอน Conversion | |
| KPI & Single | Card | ตัวเลขเดี่ยว KPI |
| Multi-row Card | ตัวเลขหลาย KPI รวมกัน | |
| KPI Visual | ค่าจริง + เป้าหมาย + Trend | |
| Table & Matrix | Table | ตารางข้อมูล, Sorting, Conditional Format |
| Matrix | Pivot Table: Row + Column + Value | |
| Slicer | Filter Interactive ในหน้า | |
| Map | Map (Bing Maps) | แผนที่ Bubble/Pie ตาม Location |
| Filled Map (Choropleth) | แผนที่ไล่สีตามประเทศ/รัฐ | |
| AI & Advanced | Decomposition Tree | วิเคราะห์ Root Cause อัตโนมัติ |
| Key Influencers | ค้นหาปัจจัยที่มีผลต่อ Metric | |
| Q&A Visual | ถามคำถามด้วยภาษาธรรมชาติ | |
| Smart Narrative | สรุปข้อมูลเป็น Text อัตโนมัติ | |
| Other | Gauge | วัดค่าเทียบเป้าหมาย Min/Max |
| Waterfall Chart | แสดงการเพิ่ม/ลดของค่า | |
| Scatter Chart | ความสัมพันธ์ 2 Metric + Bubble |
Custom Visuals จาก AppSource
Insert → More visuals → From AppSource — มากกว่า 300+ Visuals ฟรีและมีค่าใช้จ่าย
Formatting & Design
สร้าง Dashboard ที่ดูเป็นมืออาชีพด้วยการตั้งค่า Format, Theme และ Layout อย่างเป็นระบบ
Themes (ธีมสำเร็จรูปและ Custom)
Built-in Themes
View → Themes → เลือก Theme สำเร็จรูป: Default, Executive, Frontier, Innovative, Sunset, Accessible colors ฯลฯ
Custom Theme (JSON)
View → Themes → Browse for themes → ใส่ไฟล์ JSON กำหนด Colors, Fonts, Visual Defaults ทั้งหมด
Save Custom Theme
ปรับแต่ง Theme ด้วย UI แล้ว Save current theme เป็น JSON เพื่อ Reuse ข้ามไฟล์
ตัวอย่าง Theme JSON
{
"name": "Corporate Thai",
"dataColors": [
"#1B2A4A", "#F2C811", "#0078D4",
"#107C10", "#C50F1F", "#5C2D91"
],
"background": "#FAFBFD",
"foreground": "#1A1A2E",
"tableAccent": "#F2C811",
"visualStyles": {
"*": { "*": { "fontFamily": [{ "value": "Sarabun" }] } }
}
}
Conditional Formatting
ทำได้ใน Table, Matrix, Card — คลิกขวาที่ Field → Conditional formatting
| ประเภท | คำอธิบาย |
|---|---|
| Background color | ไล่สีพื้นหลัง Cell ตามค่า (Gradient หรือ Rules) |
| Font color | ไล่สีตัวอักษรตามค่า |
| Data bars | Mini Bar ใน Cell แสดงสัดส่วน |
| Icons | แสดง Icon (▲▼●) ตาม Rule ที่กำหนด |
| Web URL | Column กลายเป็น Hyperlink คลิกได้ |
| Image URL | Column กลายเป็นรูปภาพ (ต้องเป็น Public URL) |
Format Pane (On-object Formatting)
เลือก Visual → คลิกไอคอน 🎨 ใน Visualizations Pane → แบ่งเป็น General (ขนาด, ตำแหน่ง) และ Visual (เฉพาะ Visual นั้น)
Title
ชื่อ Visual, Font, สี, Alignment, ซ่อน/แสดง
Legend
ตำแหน่ง, Font, Title ของ Legend
X/Y Axis
Range, Scale, Labels, Grid lines, Title
Data Labels
แสดงตัวเลขบน/ใน Visual, Format, Font
Tooltips
ข้อมูลเพิ่มเติมเมื่อ Hover — ใส่ Fields พิเศษได้
Border & Shadow
เส้นขอบ, เงา, มุมโค้ง
Filters & Slicers
Power BI มี 2 กลไกหลักสำหรับกรองข้อมูล — Filters Pane และ Slicer Visual
ระดับของ Filters
| ระดับ | ผลกระทบ | ใครเห็น |
|---|---|---|
| Visual-level Filter | กรองเฉพาะ Visual นั้น ไม่กระทบ Visual อื่น | ผู้ดูเห็น (ถ้าไม่ล็อค) |
| Page-level Filter | กรอง Visual ทุกตัวในหน้านั้น | ผู้ดูเห็น (ถ้าไม่ล็อค) |
| Report-level Filter | กรอง Visual ทุกตัวทุกหน้า | ผู้ดูเห็น (ถ้าไม่ล็อค) |
| Drillthrough Filter | กรองเมื่อ Drillthrough มาจากหน้าอื่น | อัตโนมัติ |
ประเภท Slicer
📋 List Slicer
แสดงรายการทั้งหมด เลือกได้ Single หรือ Multi-select (Ctrl+Click) พร้อม Select all
📅 Date Range Slicer
Slider เลือกช่วงวันที่, Between / Before / After / Is / Is not — เชื่อมกับ Date Table
🔘 Dropdown Slicer
Slicer แบบ Dropdown ประหยัดพื้นที่ เหมาะกับหน้าที่แน่น
🎚️ Numeric Range Slicer
เลือกช่วงตัวเลข เช่น ราคา 100-500 บาท หรือ Quantity 1-100
🔘 Tile Slicer
ปุ่ม Tile ขนาดใหญ่ คลิกเลือกได้ เหมาะกับตัวเลือกน้อย ≤8 ตัว
🖼️ Image Slicer
แสดงรูปภาพแทน Text เหมาะสำหรับ Product Categories, Brand Logos
Sync Slicers ข้ามหน้า
เลือก Slicer ที่ต้องการ Sync
View → Sync slicers
Panel Sync slicers จะเปิดด้านซ้าย
Tick หน้าที่ต้องการ Sync
คอลัมน์ 🔄 = Sync (ค่า Slicer), คอลัมน์ 👁️ = Visible (แสดง Slicer ในหน้านั้น)
Interactions & Drillthrough
กำหนดว่า Visual ต่าง ๆ มีผลต่อกันอย่างไร และสร้าง Drill-down/Drillthrough เพื่อวิเคราะห์ลึกลงไป
Edit Interactions
เลือก Visual → Format → Edit interactions — เห็นไอคอนบน Visual อื่น ๆ ทุกตัว
Filter
Visual นี้กรอง Visual นั้นเมื่อคลิก (Default)
Highlight
Visual นี้ Highlight Visual นั้น (ไม่กรอง แค่ Dim ส่วนที่ไม่เกี่ยวข้อง)
None
Visual นี้ไม่มีผลต่อ Visual นั้นเลย
Drill-down / Drill-up
ใช้กับ Visual ที่มี Hierarchy (เช่น Year → Quarter → Month → Day)
Drill Down
คลิก Visual แล้วกด ⬇ icon — Drill ลงไปใน Data Point ที่เลือก (เช่น คลิก Q1 → เห็น Jan, Feb, Mar)
Drill Up
กด ⬆ icon หรือ Right-click → Drill up — กลับไประดับบน
Expand all
แสดงทุก Level ในคราวเดียว แทนที่จะ Drill ทีละ Level
Drillthrough (ข้ามหน้า)
สร้างหน้า Detail ใหม่
เช่น "Product Detail" หรือ "Customer Profile"
ลาก Field ที่ต้องการเป็น Drillthrough Key ไปที่ Drillthrough well
ใน Filters Pane ของหน้า Detail → ส่วน "Add drillthrough filters here"
กลับไปหน้าหลัก → คลิกขวาที่ Data Point → Drillthrough → ชื่อหน้า Detail
ระบบจะพาไปหน้า Detail พร้อม Filter อัตโนมัติ
Tooltip Page
สร้างหน้าพิเศษเป็น Tooltip — Page settings → Type = Tooltip → กำหนดขนาดเล็ก (ประมาณ 320×240) → ตั้งค่าใน Visual → Format → Tooltips → Type = Report page
Pages, Bookmarks & Buttons
จัดระเบียบรายงานด้วย Pages, สร้าง State บันทึกด้วย Bookmarks และ Navigation ด้วย Buttons
การจัดการ Pages
เพิ่ม/ลบ/Rename
คลิกขวาที่ Page Tab → Insert page, Duplicate page, Delete page, Rename page, Hide page
Hide Page
ซ่อนหน้าจากผู้ดู เหมาะสำหรับหน้า Tooltip หรือ Drillthrough ที่ไม่ต้องเห็นตรง ๆ
Page View Settings
View → Page view → Fit to page / Fit to width / Actual size — กำหนดการแสดงผลเมื่อดู
Page Size Custom
Format → Page information → Canvas settings → Custom ใส่ Width/Height (px)
Bookmarks
View → Bookmarks panel — บันทึก "State" ของรายงาน ณ ขณะนั้น (Filter, การมองเห็น Visual, Slicer ที่เลือก)
สร้าง Bookmark
ปรับ State ที่ต้องการ → Bookmarks → Add — ตั้งชื่อให้สื่อความหมาย เช่น "Q1 View", "Revenue Focus"
เชื่อม Button กับ Bookmark
Insert → Button → Action → Type = Bookmark → เลือก Bookmark — คลิก Button จะ Restore State นั้น
Toggle Visibility
ใช้ Bookmark ร่วมกับ Selection Panel ซ่อน/แสดง Visual เพื่อทำ Tab Navigation หรือ Overlay Panel
Buttons & Navigation
🔙 Back Button
Action = Back — กลับหน้าก่อนหน้าอัตโนมัติ เหมาะใช้ใน Drillthrough Page
📄 Page Navigation
Action = Page navigation → เลือกหน้า — สร้าง Custom Navigation Menu
🔗 URL Button
Action = Web URL — เปิดลิงก์ภายนอก เหมาะสำหรับ Deep Link ไป Source System
📊 Q&A Button
Action = Q&A — เปิด Q&A Interface ให้ผู้ใช้ถามคำถามด้วยภาษาธรรมชาติ
🔔 Bookmark Button
Action = Bookmark → สลับ State รายงาน
📥 Apply All Slicers
Action = Apply all slicers — Apply Slicer ทั้งหมดพร้อมกัน (ลด Query)
Measures & Calculated Columns
ความแตกต่างระหว่าง Measure และ Calculated Column เป็นสิ่งสำคัญมากที่สุดใน Power BI
Measure vs Calculated Column
Measure (แนะนำ)
คำนวณ ตอน Query ตาม Filter Context ปัจจุบัน — ไม่เพิ่มขนาดไฟล์ เร็วกว่า เหมาะกับ KPI และ Aggregation ทุกอย่าง
Calculated Column
คำนวณ ตอน Refresh บันทึกเป็น Column ใน Table — เพิ่มขนาดไฟล์ เหมาะเฉพาะเมื่อต้องใช้ใน Slicer, Axis, หรือ Row Context
สร้าง Measure
Modeling → New measure (หรือคลิกขวาที่ Table → New measure)
Calculation Groups (Power BI Desktop + Tabular Editor)
ลด Measure ซ้ำซ้อน ด้วยการสร้าง Calculation Group เช่น Time Intelligence Group ที่ใช้ได้กับทุก Measure
เคล็ดลับมือโปร: ใช้ Tabular Editor 2 (ฟรี) หรือ Tabular Editor 3 เพื่อสร้าง Calculation Groups, Perspectives, และจัดการ Model ขั้นสูง — เป็น External Tool ที่ผู้เชี่ยวชาญใช้
DAX Formulas ครบชุด
DAX (Data Analysis Expressions) คือภาษาสูตรคำนวณของ Power BI มีกว่า 200+ ฟังก์ชัน — ทำความเข้าใจ Filter Context คือกุญแจสำคัญ
หมวดฟังก์ชัน DAX
📊 Aggregation Functions
🔍 Filter Functions
📋 Table Functions
🔢 Logical & Conditional
📝 Text Functions
📅 Date Functions
Time Intelligence Functions
Time Intelligence คือหัวข้อที่ใช้งานบ่อยที่สุดใน Business Reporting — ต้องการ Date Table ที่ Mark เป็น Date Table ก่อน
YTD / QTD / MTD
Period Comparison
Row-Level Security (RLS)
RLS ควบคุมว่าผู้ใช้แต่ละคนเห็นข้อมูล Row ไหนได้บ้าง — ตั้งค่าใน Desktop, บังคับใช้ใน Service
Static RLS (Role-based)
Modeling → Manage roles → Create role
ตั้งชื่อ Role เช่น "Bangkok Manager", "Sales Team"
เพิ่ม DAX Filter Expression
Test ด้วย View as role
Modeling → View as → เลือก Role → ดูว่าข้อมูลกรองถูกต้อง
Publish ขึ้น Service → เพิ่ม Members ใน Role
Dataset → Security → กำหนด Email ของผู้ใช้ในแต่ละ Role
Dynamic RLS (ใช้ Email ของผู้ Login)
Dynamic RLS ดีกว่า Static: ไม่ต้องสร้าง Role ใหม่ทุกครั้งที่มีผู้ใช้ใหม่ แค่เพิ่ม Row ใน UserTable และผู้ใช้จะเห็นข้อมูลของตัวเองโดยอัตโนมัติ
Publish & Power BI Service
หลังสร้างรายงานใน Desktop เสร็จ — Publish ขึ้น Power BI Service เพื่อแชร์และ Collaborate กับทีม
ขั้นตอน Publish
Home → Publish
หรือกด Ctrl+Enter (ถ้าตั้งค่าไว้)
เลือก Workspace ปลายทาง
My workspace (ส่วนตัว) หรือ Team workspace ที่สร้างไว้
รอ Upload เสร็จ → คลิก "Open in Power BI"
Publish จะ Upload ทั้ง Report และ Dataset
ฟีเจอร์ใน Power BI Service
Workspace
พื้นที่ทำงานร่วมกัน จัดการ Reports, Datasets, Dashboards, Dataflows
Dashboard
Pin Visual จาก Report หลาย ๆ อันมารวมใน Dashboard เดียว — อัปเดต Real-time
Data Alerts
แจ้งเตือน Email/Mobile เมื่อ KPI ถึง Threshold ที่กำหนด
Scheduled Refresh
รีเฟรชข้อมูลอัตโนมัติ สูงสุด 8x/วัน (Pro) หรือ 48x/วัน (Premium)
Subscribe & Email
ส่ง Snapshot รายงานทาง Email อัตโนมัติ ตามเวลาที่กำหนด
Deployment Pipeline
Dev → Test → Production pipeline จัดการ Release รายงานเป็นระบบ (Premium)
Gateway & Data Refresh
On-Premises Data Gateway คือสะพานเชื่อมข้อมูลในองค์กร (On-Premise) กับ Power BI Service บน Cloud
ประเภท Gateway
🏢 On-Premises Gateway (Standard)
ติดตั้งบน Server ใช้ร่วมกันหลายคน รองรับทุก Data Source — เหมาะสำหรับ Enterprise
👤 Personal Mode Gateway
ติดตั้งบนเครื่องส่วนตัว ใช้คนเดียว ไม่รองรับ DirectQuery — เหมาะสำหรับ Individual
การติดตั้ง Gateway
ดาวน์โหลด Gateway จาก powerbi.microsoft.com/gateway
ติดตั้งบน Server/เครื่องที่เข้าถึง Data Source ได้
ควรเป็นเครื่องที่เปิดตลอด 24/7
Sign in ด้วย Microsoft Account และตั้งชื่อ Gateway
เพิ่ม Data Source ใน Gateway Admin (powerbi.microsoft.com)
ใส่ Connection String, Username/Password ของ Database
เชื่อม Dataset ใน Service กับ Gateway
Dataset → Settings → Gateway connection → เลือก Gateway และ Data Source
ตั้งค่า Scheduled Refresh
Dataset → Settings → Scheduled refresh → เปิด Keep your data up to date → เลือก Frequency และเวลา
| License | Refresh สูงสุดต่อวัน | DirectQuery |
|---|---|---|
| Shared (Pro) | 8 ครั้ง | Every ~15 min |
| Premium Per User | 48 ครั้ง | Every ~15 min |
| Premium Capacity | 48 ครั้ง + Incremental | Near Real-time |
Embed & Power BI REST API
ฝัง Power BI Reports ลงในแอปพลิเคชัน เว็บไซต์ หรือ Teams ด้วยหลายวิธี
วิธี Embed ต่าง ๆ
🌐 Publish to Web (สาธารณะ)
File → Publish to web → รับ iframe code ฝังได้ทุกเว็บ ไม่ต้อง Login — แต่ข้อมูลสาธารณะทั้งหมด
🔒 Embed in SharePoint Online
Service → File → Embed in SharePoint Online — ต้อง Login Microsoft 365 เพื่อดู
💬 Teams Integration
เพิ่ม Tab ใน Teams Channel → Power BI → เลือก Report — ทีมดูได้โดยตรงใน Teams
🔧 Embed for Customers (API)
ใช้ Azure AD App + Power BI Embedded API — ฝังในแอปของคุณ ผู้ใช้ไม่ต้องมี Power BI License
Power BI REST API
import requests # Get Access Token จาก Azure AD token_url = f"https://login.microsoftonline.com/{TENANT_ID}/oauth2/token" token_data = { "grant_type": "client_credentials", "client_id": CLIENT_ID, "client_secret": CLIENT_SECRET, "resource": "https://analysis.windows.net/powerbi/api", } token = requests.post(token_url, data=token_data).json()["access_token"] headers = {"Authorization": f"Bearer {token}"} # List Workspaces workspaces = requests.get( "https://api.powerbi.com/v1.0/myorg/groups", headers=headers ).json()["value"] # Trigger Dataset Refresh requests.post( f"https://api.powerbi.com/v1.0/myorg/datasets/{DATASET_ID}/refreshes", headers=headers )
Performance Tuning
รายงานที่โหลดช้าสร้างประสบการณ์ที่ไม่ดี — ปรับ Performance ด้วยเทคนิคเหล่านี้
Performance Analyzer
View → Performance analyzer → Start recording → ทำ Interaction → ดูว่า Visual ไหนใช้เวลานาน
| Metric ใน Performance Analyzer | ความหมาย |
|---|---|
| DAX query | เวลา Query DAX Engine — ถ้านาน ให้ปรับ DAX/Model |
| Visual display | เวลา Render Visual — ถ้านาน ลด Data Points หรือ Custom Visual ซับซ้อน |
| Other | เวลา Network, Overhead อื่น ๆ |
เทคนิคปรับ Performance
ลด Cardinality ของ Column
Column ที่มีค่าไม่ซ้ำมาก (High Cardinality) ใช้ Memory เยอะ — ตัด Column ที่ไม่จำเป็นออก, Group ค่าที่ไม่จำเป็นต้องแยก
ใช้ Star Schema
หลีกเลี่ยง Many-to-many Relationship และ Bidirectional Filter ที่ไม่จำเป็น — ทำให้ Query Engine ทำงานง่ายขึ้น
ลด Visual ในหน้า
แต่ละ Visual สร้าง DAX Query แยก — ถ้าหน้าช้า ลอง Spread Visual ออกหลายหน้า
ใช้ DIVIDE แทน "/"
DIVIDE จัดการ Division by Zero โดยไม่ Error และเร็วกว่า IF+ISERROR
หลีกเลี่ยง CALCULATE ซ้อน CALCULATE ลึกเกิน
ซ้อน CALCULATE หลายชั้นทำให้ Filter Context ซับซ้อนและช้า — ลอง Restructure DAX
Aggregations Table
สร้าง Pre-aggregated Table สำหรับข้อมูลขนาดใหญ่ — Power BI ใช้ Aggregation อัตโนมัติถ้า Match
Optimize Ribbon → Pause visuals
หยุด Visual ทั้งหมดขณะปรับ Slicer หลายตัว แล้ว Resume เมื่อพร้อม — ลด Query จำนวนมาก
VertiPaq Analyzer
ใช้ DAX Studio + VertiPaq Analyzer วิเคราะห์ Memory Usage ของแต่ละ Table/Column
Keyboard Shortcuts & Pro Tips
Keyboard Shortcuts
DAX Editor Shortcuts (Formula Bar)
Pro Tips จากผู้เชี่ยวชาญ
External Tools ที่ต้องมี
DAX Studio (ฟรี) — Debug DAX, Query ตรง Engine | Tabular Editor 2 (ฟรี) — สร้าง Calculation Groups, Best Practice Analyzer | Bravo (ฟรี) — สร้าง Date Table อัตโนมัติ
เก็บ Measure ไว้ใน Measure Table
สร้าง Table เปล่าชื่อ "⚡ Measures" → เก็บ Measure ทั้งหมดไว้ที่นั่น ทำให้ Fields Pane เป็นระเบียบ
ใช้ Description Field สำหรับ Measures
Properties → Description — ใส่คำอธิบาย DAX Formula จะแสดงเป็น Tooltip ใน Fields Pane
Align ด้วย Format → Align
เลือก Visual หลายตัว → Format → Align → ใช้ Left/Right/Top/Bottom/Center/Middle + Distribute เพื่อ Spacing เท่ากัน
Backup ด้วย PBIX Version Control
บันทึก PBIX หลายเวอร์ชัน หรือใช้ Git + Power BI Desktop Projects (PBIP format) สำหรับ Source Control จริง ๆ
แก้ปัญหาที่พบบ่อย
| ปัญหา | สาเหตุ | วิธีแก้ |
|---|---|---|
| รายงานโหลดช้า | Visual เยอะ / DAX ซับซ้อน / ข้อมูลใหญ่ | Performance Analyzer → ลด Visual, ปรับ DAX, เพิ่ม Aggregation Table |
| "A circular dependency" Error | Calculated Column อ้างถึงกันวนซ้ำ | ตรวจ Column/Measure ที่อ้างถึงกัน แยกเป็น Measure แทน |
| ตัวเลข Double Count | Relationship ผิด / Many-to-many ไม่ตั้งใจ | Model View → ตรวจ Relationship Direction, ใช้ DISTINCTCOUNT |
| Date Filter ไม่ Work | Date Table ยังไม่ Mark หรือ Relationship ผิด | Table → Mark as date table → ตรวจ Relationship กับ Fact Table |
| BLANK ใน Visual | Relationship ขาด / Filter กรองหมด | ใช้ COALESCE([Measure], 0) หรือ IF(ISBLANK...) | ตรวจ Filter |
| RLS ไม่ทำงาน | ลืม Publish / Members ไม่ถูก Assign | Publish ใหม่ → Dataset → Security → เพิ่ม Email ในแต่ละ Role |
| Refresh ล้มเหลว | Gateway ออฟไลน์ / Password หมดอายุ | ตรวจ Gateway Status → Update Credentials ใน Dataset Settings |
| Visual ไม่ Responsive | Canvas Size ใหญ่เกิน / Custom Visual Bug | ลอง Built-in Visual แทน | ปรับ Page View → Fit to page |
| ไฟล์ PBIX ใหญ่เกินไป | ข้อมูล Import มากเกิน / Image ในไฟล์ | ลด Column/Row ที่ไม่จำเป็นใน Power Query, Compress Image |
| DAX CALCULATE ผิด | Filter Context เข้าใจผิด | ทดสอบใน DAX Studio → ดู Result ทีละขั้น + อ่าน Context Transition |
| Cross-filter ไม่ทำงาน | Edit Interactions ตั้งเป็น None | Format → Edit interactions → เปลี่ยนเป็น Filter หรือ Highlight |
| Publish ขึ้น Service ไม่ได้ | ไม่มี Pro License หรือ Sign in ผิด Account | ตรวจ License → Sign out → Sign in ด้วย Work/School account |
แหล่งช่วยเหลือ: Microsoft Learn (learn.microsoft.com/power-bi) | Power BI Community (community.powerbi.com) | Guy in a Cube (YouTube) | SQLBI (sqlbi.com) สำหรับ DAX ขั้นสูง
Learning Path แนะนำ
สัปดาห์ที่ 1 — พื้นฐาน
ติดตั้ง → เชื่อม Excel/CSV → สร้าง Bar Chart, Card, Table → Publish ขึ้น Service
สัปดาห์ที่ 2 — Power Query & Model
ทำความสะอาดข้อมูล → Star Schema → สร้าง Date Table → Relationship
สัปดาห์ที่ 3 — DAX พื้นฐาน
Measure พื้นฐาน → CALCULATE → IF/SWITCH → Time Intelligence YTD/YoY
สัปดาห์ที่ 4 — UX & Design
Theme, Conditional Formatting → Bookmarks, Buttons, Drillthrough → Mobile Layout
DAX สำหรับ ILPI Dashboard
ตัวอย่าง DAX Measure ที่ใช้จริงในโครงการ Logistics Data Analytics Solutions สำหรับคำนวณตัวชี้วัด ILPI ทั้ง 9 หมวด
Import จาก ILPI
Export CSV จากหน้ารายงาน ILPI แล้ว Get Data → CSV ใน Power BI
Live จาก Google Sheets
Get Data → Web → ใส่ URL Google Sheets (Publish to web) ข้อมูล Refresh อัตโนมัติ
สร้าง ILPI Dashboard
Radar Chart, KPI Card, Matrix Table ด้วย Custom Visual ใน Power BI
DAX Measures สำหรับ ILPI — Cost Dimension (% ต่อยอดขาย)
DAX สำหรับ YoY Comparison (เปรียบเทียบระหว่างปี)
แนะนำ Visual สำหรับ ILPI Dashboard
| ตัวชี้วัด | Visual ที่แนะนำ | เหตุผล |
|---|---|---|
| ภาพรวม 9 หมวด | Radar Chart (Custom Visual: "Spider Chart") | เห็นจุดแข็ง/อ่อนทุกหมวดพร้อมกัน |
| DIFOT รายหมวด | Clustered Bar Chart | เปรียบเทียบหมวดได้ชัดเจน |
| KPI รายมิติ (Cost/Time/R) | Card Visual + Conditional Format | เห็นตัวเลขสำคัญทันที |
| แนวโน้มรายปี | Line Chart + Slicer ปี | ติดตามพัฒนาการตลอดเวลา |
| Matrix ทุกหมวด | Matrix Visual | แสดง 9×3 ตัวชี้วัดแบบตาราง |
Pro Tip: สร้าง Date Table แยกต่างหากแล้ว Mark as Date Table — จะทำให้ Time Intelligence DAX เช่น DIFOT_YoY ทำงานถูกต้อง และ Slicer ปีจะ Filter ข้อมูลได้ครบทุก Table