Power BI Desktop / คู่มือฉบับสมบูรณ์ ⚡ Desktop App Microsoft 365 ✓ อัปเดต 2025 🚛 Logistics
0%
Microsoft Power BI Desktop — Logistics Analytics Series 2025

คู่มือ Power BI
ฉบับครบเครื่อง

ตั้งแต่ติดตั้ง ไปถึง DAX ขั้นสูง, RLS, Power Query และการ Publish — พร้อมตัวอย่าง DAX สำหรับ ILPI Dashboard โดยเฉพาะ

⚡ Desktop App (ฟรี) Windows 10/11 DAX Language Power Query (M) DirectQuery RLS Security 🚛 ILPI Context
21
บทเรียน
100+
Data Connectors
30+
Visual Types
200+
DAX Functions
✅ Quick Start Checklist — ทำตามลำดับนี้
1
ดาวน์โหลด & ติดตั้งpowerbi.microsoft.com → Download Desktop (ฟรี)
2
Sign inใช้ Work/School Email (Microsoft 365)
3
Get Dataเชื่อม Excel หรือ Google Sheets ก่อน
4
Power Queryทำความสะอาดข้อมูล เปลี่ยน Type
5
Data Modelสร้าง Relationship ระหว่าง Table
6
สร้าง Visualลาก Field → เลือก Chart Type
7
สร้าง MeasureDAX พื้นฐาน SUM, DIVIDE, CALCULATE
8
PublishHome → Publish → เลือก Workspace
บทที่ 01

การติดตั้ง 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

ส่วนประกอบขั้นต่ำแนะนำ
OSWindows 10 (1903) 64-bitWindows 11 64-bit
CPU1 GHz 64-bitMulti-core 2.5 GHz+
RAM2 GB16 GB+
Storage1 GBSSD, 10 GB+ free
Display1024×7681920×1080 หรือสูงกว่า
.NET.NET Framework 4.6.1.NET 6+

การตั้งค่าหลังติดตั้ง

1

Sign in ด้วย Microsoft Account

File → Sign in → ใช้ Microsoft/Work/School account เพื่อ Publish ขึ้น Power BI Service ได้ (ไม่บังคับถ้าใช้ Desktop เท่านั้น)

2

ตั้งค่า Language และ Regional Format

File → Options → Regional Settings → เลือก Locale (Thai) เพื่อแสดงวันที่และตัวเลขถูกรูปแบบ

3

เปิด Preview Features ที่ต้องการ

File → Options → Preview features → เปิดฟีเจอร์ใหม่ ๆ เช่น On-object Interaction, Enhanced tooltips

4

ตั้งค่า DirectQuery / Import Mode Default

File → Options → Data Load → เลือก Default Mode สำหรับการนำเข้าข้อมูลใหม่

⚡

อัปเดตทุกเดือน: Microsoft ออก Power BI Desktop Version ใหม่ทุกเดือน (เช่น June 2024, July 2024) ควรอัปเดตสม่ำเสมอเพื่อรับฟีเจอร์ใหม่และ Bug fixes — ตรวจสอบเวอร์ชันที่ Help → About

บทที่ 02

ส่วนประกอบหน้าจอ

ทำความรู้จักกับทุกส่วนของ 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เครื่องมือหลัก
HomeGet data, Refresh, New visual, Text box, Transform data (Power Query)
InsertNew page, Visuals, AI Visuals, Text box, Button, Shape, Image, Q&A
ModelingNew measure, New column, New table, Manage relationships, Calculations group
ViewThemes, Page view, Show/hide panes, Sync slicers, Performance analyzer
OptimizeOptimization presets, Pause visuals, Refresh query plan
HelpGuided learning, Community, Keyboard shortcuts, About
บทที่ 03

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 หรือข้อมูลใหญ่มาก

บทที่ 04

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 ได้เต็มที่

M Language — Power Query
// ตัวอย่าง 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

M Language — Full Query Script
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
บทที่ 05

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

1

ไปที่ Model View (ไอคอนกราฟ ด้านซ้าย)

เห็น Diagram แสดง Table ทั้งหมด Power BI อาจตรวจจับ Relationship อัตโนมัติ

2

ลาก Column ใน Table หนึ่งไปวางที่ Column ใน Table อื่น

หรือ Modeling → Manage relationships → New

3

กำหนด Cardinality

Many-to-one (*:1) — บ่อยที่สุด | One-to-one (1:1) | Many-to-many (*:*) — ต้องระวัง

4

กำหนด Cross-filter direction

Single (ทางเดียว — แนะนำ) หรือ Both (ทั้งสองทาง — อาจมีปัญหา Ambiguity)

Date Table — สิ่งที่ขาดไม่ได้

⚠️

สำคัญมาก: ทุกรายงานที่มีการวิเคราะห์ตามเวลาต้องมี Date Table แยกต่างหาก และ Mark ว่าเป็น Date Table เพื่อให้ Time Intelligence DAX ทำงานถูกต้อง

-- สร้าง Date Table ด้วย DAX Date_Table = ADDCOLUMNS( CALENDAR(DATE(2020,1,1), DATE(2025,12,31)), "Year", YEAR([Date]), "Quarter", "Q" & QUARTER([Date]), "Month", MONTH([Date]), "Month Name", FORMAT([Date], "MMMM"), "Week Number", WEEKNUM([Date]), "Day of Week", FORMAT([Date], "dddd"), "Is Weekend", IF(WEEKDAY([Date],2) > 5, TRUE(), FALSE()) )
บทที่ 06

Visuals ทุกประเภท

Power BI มี Built-in Visuals กว่า 30 ประเภท และ Custom Visuals จาก AppSource อีกหลายร้อยแบบ

Built-in Visuals ครบชุด

หมวดVisualเหมาะสำหรับ
Bar & ColumnClustered Bar Chartเปรียบเทียบ Category แนวนอน
Stacked Bar Chartเปรียบเทียบ + ส่วนประกอบ แนวนอน
100% Stacked Barสัดส่วน % แนวนอน
Clustered Column Chartเปรียบเทียบ Category แนวตั้ง
Stacked Columnเปรียบเทียบ + ส่วนประกอบ แนวตั้ง
Line & AreaLine Chartแนวโน้มตามเวลา
Area Chartปริมาณสะสมตามเวลา
Line & Stacked ColumnCombo: แนวโน้ม + เปรียบเทียบ
Pie & DonutPie Chartสัดส่วน ≤5 หมวด
Donut Chartสัดส่วนพร้อมตัวเลขกลาง
Treemapสัดส่วนลำดับชั้น (Hierarchical)
Funnelขั้นตอน Conversion
KPI & SingleCardตัวเลขเดี่ยว KPI
Multi-row Cardตัวเลขหลาย KPI รวมกัน
KPI Visualค่าจริง + เป้าหมาย + Trend
Table & MatrixTableตารางข้อมูล, Sorting, Conditional Format
MatrixPivot Table: Row + Column + Value
SlicerFilter Interactive ในหน้า
MapMap (Bing Maps)แผนที่ Bubble/Pie ตาม Location
Filled Map (Choropleth)แผนที่ไล่สีตามประเทศ/รัฐ
AI & AdvancedDecomposition Treeวิเคราะห์ Root Cause อัตโนมัติ
Key Influencersค้นหาปัจจัยที่มีผลต่อ Metric
Q&A Visualถามคำถามด้วยภาษาธรรมชาติ
Smart Narrativeสรุปข้อมูลเป็น Text อัตโนมัติ
OtherGaugeวัดค่าเทียบเป้าหมาย Min/Max
Waterfall Chartแสดงการเพิ่ม/ลดของค่า
Scatter Chartความสัมพันธ์ 2 Metric + Bubble

Custom Visuals จาก AppSource

Insert → More visuals → From AppSource — มากกว่า 300+ Visuals ฟรีและมีค่าใช้จ่าย

Charticulator Deneb (Vega-Lite) Sankey Chart Gantt Chart Radar / Spider Chart Word Cloud Bullet Chart Calendar Visual Chiclet Slicer HTML Content Image Grid Power KPI Small Multiples Heatmap Azure Maps Icon Map
บทที่ 07

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

JSON — Power BI Theme
{
  "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 barsMini Bar ใน Cell แสดงสัดส่วน
Iconsแสดง Icon (▲▼●) ตาม Rule ที่กำหนด
Web URLColumn กลายเป็น Hyperlink คลิกได้
Image URLColumn กลายเป็นรูปภาพ (ต้องเป็น 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

เส้นขอบ, เงา, มุมโค้ง

บทที่ 08

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 ข้ามหน้า

1

เลือก Slicer ที่ต้องการ Sync

2

View → Sync slicers

Panel Sync slicers จะเปิดด้านซ้าย

3

Tick หน้าที่ต้องการ Sync

คอลัมน์ 🔄 = Sync (ค่า Slicer), คอลัมน์ 👁️ = Visible (แสดง Slicer ในหน้านั้น)

บทที่ 09

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 (ข้ามหน้า)

1

สร้างหน้า Detail ใหม่

เช่น "Product Detail" หรือ "Customer Profile"

2

ลาก Field ที่ต้องการเป็น Drillthrough Key ไปที่ Drillthrough well

ใน Filters Pane ของหน้า Detail → ส่วน "Add drillthrough filters here"

3

กลับไปหน้าหลัก → คลิกขวาที่ Data Point → Drillthrough → ชื่อหน้า Detail

ระบบจะพาไปหน้า Detail พร้อม Filter อัตโนมัติ

Tooltip Page

สร้างหน้าพิเศษเป็น Tooltip — Page settings → Type = Tooltip → กำหนดขนาดเล็ก (ประมาณ 320×240) → ตั้งค่าใน Visual → Format → Tooltips → Type = Report page

บทที่ 10

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)

บทที่ 11

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)

Total Revenue = SUM(Sales[Revenue]) Avg Order Value = DIVIDE(SUM(Sales[Revenue]), COUNTROWS(Sales), 0) Profit Margin % = DIVIDE( SUM(Sales[Revenue]) - SUM(Sales[Cost]), SUM(Sales[Revenue]), 0 )

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 ที่ผู้เชี่ยวชาญใช้

บทที่ 12

DAX Formulas ครบชุด

DAX (Data Analysis Expressions) คือภาษาสูตรคำนวณของ Power BI มีกว่า 200+ ฟังก์ชัน — ทำความเข้าใจ Filter Context คือกุญแจสำคัญ

หมวดฟังก์ชัน DAX

📊 Aggregation Functions

SUM(Sales[Revenue]) AVERAGE(Sales[Revenue]) COUNT(Sales[OrderID]) -- นับ Non-blank COUNTA(Sales[OrderID]) -- นับ Non-blank (รวม Text) DISTINCTCOUNT(Sales[CustomerID]) -- นับค่าไม่ซ้ำ MAX(Sales[Revenue]) MIN(Sales[Revenue]) MEDIAN(Sales[Revenue]) PERCENTILE.INC(Sales[Revenue], 0.9) -- 90th Percentile

🔍 Filter Functions

-- CALCULATE: เปลี่ยน Filter Context — ฟังก์ชันสำคัญที่สุดใน DAX Revenue_Bangkok = CALCULATE( SUM(Sales[Revenue]), Dim_City[City] = "Bangkok" ) -- FILTER: กรอง Table ก่อนรวม Big_Orders = CALCULATE( SUM(Sales[Revenue]), FILTER(Sales, Sales[Quantity] > 10) ) -- ALL: ลบ Filter ออกทั้งหมด Revenue_All = CALCULATE(SUM(Sales[Revenue]), ALL(Sales)) -- ALLEXCEPT: ลบ Filter ยกเว้น Column ที่ระบุ Revenue_Category = CALCULATE( SUM(Sales[Revenue]), ALLEXCEPT(Dim_Product, Dim_Product[Category]) ) -- REMOVEFILTERS: ลบ Filter จาก Column/Table CALCULATE([Total Revenue], REMOVEFILTERS(Dim_Date[Year]))

📋 Table Functions

-- SUMMARIZE: Group By Revenue_by_City = SUMMARIZE( Sales, Dim_City[City], "Revenue", SUM(Sales[Revenue]) ) -- ADDCOLUMNS: เพิ่ม Column ใน Virtual Table ADDCOLUMNS(VALUES(Dim_Product[Product]), "Revenue", [Total Revenue], "Margin", [Profit Margin %] ) -- TOPN: Top N Rows Top_5_Products = TOPN(5, Dim_Product, [Total Revenue], DESC) -- CROSSJOIN: Cartesian Product CROSSJOIN(VALUES(Dim_Category[Category]), VALUES(Dim_Date[Year]))

🔢 Logical & Conditional

-- IF, IFERROR, SWITCH Category_Size = IF([Total Revenue] > 1000000, "Large", IF([Total Revenue] > 100000, "Medium", "Small")) -- SWITCH: ดีกว่า IF ซ้อนหลายชั้น Day_Type = SWITCH( WEEKDAY(Dim_Date[Date], 2), 6, "วันเสาร์", 7, "วันอาทิตย์", "วันทำงาน" ) -- DIVIDE: หารโดยไม่ Error ถ้าหารด้วย 0 CTR = DIVIDE([Clicks], [Impressions], 0) -- ISBLANK, ISNUMBER, ISTEXT Has_Revenue = IF(ISBLANK([Total Revenue]), "ไม่มีข้อมูล", [Total Revenue])

📝 Text Functions

CONCATENATE(Customer[First], Customer[Last]) -- รวม Text 2 ชิ้น Customer[First] & " " & Customer[Last] -- รวมด้วย & (สะดวกกว่า) FORMAT([Revenue], "#,##0.00") -- Format ตัวเลขเป็น Text FORMAT([OrderDate], "DD/MM/YYYY") -- Format วันที่ LEFT(Product[Code], 3) -- ตัด 3 ตัวซ้าย RIGHT(Product[Code], 4) -- ตัด 4 ตัวขวา MID(Product[Code], 3, 2) -- ตัดจากตำแหน่ง 3 ยาว 2 ตัว UPPER(Customer[Name]) -- ตัวใหญ่ทั้งหมด TRIM(Product[Name]) -- ลบ Space หัว/ท้าย SUBSTITUTE(URL[Link], "http", "https") -- แทนที่ Text FIND("@", Customer[Email]) -- หาตำแหน่ง @ SEARCH("brand", Campaign[Name], 1, 0) -- ไม่ Case-sensitive CONTAINSSTRING(Campaign[Name], "brand") -- True/False

📅 Date Functions

TODAY() -- วันที่ปัจจุบัน NOW() -- วันที่และเวลาปัจจุบัน DATE(2024, 12, 31) -- สร้าง Date YEAR([Date]) -- ปี MONTH([Date]) -- เดือน 1-12 DAY([Date]) -- วันที่ 1-31 WEEKDAY([Date], 2) -- 1=จันทร์, 7=อาทิตย์ WEEKNUM([Date], 2) -- สัปดาห์ที่ของปี EOMONTH([Date], 0) -- วันสุดท้ายของเดือน DATEDIFF([Start], [End], DAY) -- ผลต่างเป็นวัน DATEADD(Dim_Date[Date], -1, MONTH) -- เดือนก่อนหน้า
บทที่ 13

Time Intelligence Functions

Time Intelligence คือหัวข้อที่ใช้งานบ่อยที่สุดใน Business Reporting — ต้องการ Date Table ที่ Mark เป็น Date Table ก่อน

YTD / QTD / MTD

-- Year-to-Date Revenue_YTD = TOTALYTD([Total Revenue], Dim_Date[Date]) -- Quarter-to-Date Revenue_QTD = TOTALQTD([Total Revenue], Dim_Date[Date]) -- Month-to-Date Revenue_MTD = TOTALMTD([Total Revenue], Dim_Date[Date]) -- Fiscal Year (ปีงบ เริ่ม 1 เมษา) Revenue_FYTD = TOTALYTD([Total Revenue], Dim_Date[Date], "3-31")

Period Comparison

-- Same Period Last Year Revenue_SPLY = CALCULATE([Total Revenue], SAMEPERIODLASTYEAR(Dim_Date[Date])) -- Previous Year Revenue_PY = CALCULATE([Total Revenue], PREVIOUSYEAR(Dim_Date[Date])) -- Previous Month Revenue_PM = CALCULATE([Total Revenue], PREVIOUSMONTH(Dim_Date[Date])) -- YoY Growth % YoY_Growth = DIVIDE([Total Revenue] - [Revenue_SPLY], [Revenue_SPLY], 0) -- Rolling 12 Months Revenue_R12M = CALCULATE( [Total Revenue], DATESINPERIOD(Dim_Date[Date], LASTDATE(Dim_Date[Date]), -12, MONTH) ) -- Moving Average 3 เดือน Revenue_MA3 = AVERAGEX( DATESINPERIOD(Dim_Date[Date], LASTDATE(Dim_Date[Date]), -3, MONTH), [Total Revenue] )
บทที่ 14

Row-Level Security (RLS)

RLS ควบคุมว่าผู้ใช้แต่ละคนเห็นข้อมูล Row ไหนได้บ้าง — ตั้งค่าใน Desktop, บังคับใช้ใน Service

Static RLS (Role-based)

1

Modeling → Manage roles → Create role

ตั้งชื่อ Role เช่น "Bangkok Manager", "Sales Team"

2

เพิ่ม DAX Filter Expression

-- กรองเฉพาะ Bangkok [City] = "Bangkok" -- กรองตาม Sales Region [Region] = "North"
3

Test ด้วย View as role

Modeling → View as → เลือก Role → ดูว่าข้อมูลกรองถูกต้อง

4

Publish ขึ้น Service → เพิ่ม Members ใน Role

Dataset → Security → กำหนด Email ของผู้ใช้ในแต่ละ Role

Dynamic RLS (ใช้ Email ของผู้ Login)

-- ต้องมี Table ที่เชื่อม Email กับ Filter -- UserTable: [Email] [Region] -- DAX Filter ใน Role: [Region] = LOOKUPVALUE( UserTable[Region], UserTable[Email], USERPRINCIPALNAME() ) -- หรือใช้ USERNAME() สำหรับ On-Premise [Region] = LOOKUPVALUE( UserTable[Region], UserTable[Username], USERNAME() )
✅

Dynamic RLS ดีกว่า Static: ไม่ต้องสร้าง Role ใหม่ทุกครั้งที่มีผู้ใช้ใหม่ แค่เพิ่ม Row ใน UserTable และผู้ใช้จะเห็นข้อมูลของตัวเองโดยอัตโนมัติ

บทที่ 15

Publish & Power BI Service

หลังสร้างรายงานใน Desktop เสร็จ — Publish ขึ้น Power BI Service เพื่อแชร์และ Collaborate กับทีม

ขั้นตอน Publish

1

Home → Publish

หรือกด Ctrl+Enter (ถ้าตั้งค่าไว้)

2

เลือก Workspace ปลายทาง

My workspace (ส่วนตัว) หรือ Team workspace ที่สร้างไว้

3

รอ 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)

บทที่ 16

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

1

ดาวน์โหลด Gateway จาก powerbi.microsoft.com/gateway

2

ติดตั้งบน Server/เครื่องที่เข้าถึง Data Source ได้

ควรเป็นเครื่องที่เปิดตลอด 24/7

3

Sign in ด้วย Microsoft Account และตั้งชื่อ Gateway

4

เพิ่ม Data Source ใน Gateway Admin (powerbi.microsoft.com)

ใส่ Connection String, Username/Password ของ Database

5

เชื่อม Dataset ใน Service กับ Gateway

Dataset → Settings → Gateway connection → เลือก Gateway และ Data Source

ตั้งค่า Scheduled Refresh

Dataset → Settings → Scheduled refresh → เปิด Keep your data up to date → เลือก Frequency และเวลา

LicenseRefresh สูงสุดต่อวันDirectQuery
Shared (Pro)8 ครั้งEvery ~15 min
Premium Per User48 ครั้งEvery ~15 min
Premium Capacity48 ครั้ง + IncrementalNear Real-time
บทที่ 17

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

Python — 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
)
บทที่ 18

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

บทที่ 19

Keyboard Shortcuts & Pro Tips

Keyboard Shortcuts

UndoCtrlZ
RedoCtrlY
CopyCtrlC
PasteCtrlV
Duplicate VisualCtrlD
Select AllCtrlA
SaveCtrlS
New MeasureAltM
Find / ReplaceCtrlH
Select MultipleCtrlClick
Multi-select AreaCtrlDrag
Bring to frontCtrlShiftF
Send to backCtrlShiftB
Group VisualsCtrlG
UngroupCtrlShiftG
Zoom In CanvasCtrl+
Zoom Out CanvasCtrl−
Fit PageCtrlShiftH
Tab Focus (Accessibility)Tab
Keyboard Shortcuts List?

DAX Editor Shortcuts (Formula Bar)

AutocompleteTab
New Line ใน FormulaShiftEnter
Comment LineCtrl/
Format DAX (DAX Studio)F5

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 จริง ๆ

บทที่ 20

แก้ปัญหาที่พบบ่อย

ปัญหาสาเหตุวิธีแก้
รายงานโหลดช้าVisual เยอะ / DAX ซับซ้อน / ข้อมูลใหญ่Performance Analyzer → ลด Visual, ปรับ DAX, เพิ่ม Aggregation Table
"A circular dependency" ErrorCalculated Column อ้างถึงกันวนซ้ำตรวจ Column/Measure ที่อ้างถึงกัน แยกเป็น Measure แทน
ตัวเลข Double CountRelationship ผิด / Many-to-many ไม่ตั้งใจModel View → ตรวจ Relationship Direction, ใช้ DISTINCTCOUNT
Date Filter ไม่ WorkDate Table ยังไม่ Mark หรือ Relationship ผิดTable → Mark as date table → ตรวจ Relationship กับ Fact Table
BLANK ใน VisualRelationship ขาด / Filter กรองหมดใช้ COALESCE([Measure], 0) หรือ IF(ISBLANK...) | ตรวจ Filter
RLS ไม่ทำงานลืม Publish / Members ไม่ถูก AssignPublish ใหม่ → Dataset → Security → เพิ่ม Email ในแต่ละ Role
Refresh ล้มเหลวGateway ออฟไลน์ / Password หมดอายุตรวจ Gateway Status → Update Credentials ใน Dataset Settings
Visual ไม่ ResponsiveCanvas 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 ตั้งเป็น NoneFormat → 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

สัปดาห์ที่ 1 — พื้นฐาน

ติดตั้ง → เชื่อม Excel/CSV → สร้าง Bar Chart, Card, Table → Publish ขึ้น Service

2

สัปดาห์ที่ 2 — Power Query & Model

ทำความสะอาดข้อมูล → Star Schema → สร้าง Date Table → Relationship

3

สัปดาห์ที่ 3 — DAX พื้นฐาน

Measure พื้นฐาน → CALCULATE → IF/SWITCH → Time Intelligence YTD/YoY

4

สัปดาห์ที่ 4 — UX & Design

Theme, Conditional Formatting → Bookmarks, Buttons, Drillthrough → Mobile Layout

★ Logistics Analytics

DAX สำหรับ ILPI Dashboard

ตัวอย่าง DAX Measure ที่ใช้จริงในโครงการ Logistics Data Analytics Solutions สำหรับคำนวณตัวชี้วัด ILPI ทั้ง 9 หมวด

🚛 บริบทโลจิสติกส์
เชื่อม Power BI กับข้อมูล ILPI
ข้อมูลที่ Export จาก ILPI System (.csv หรือ Google Sheets) สามารถนำเข้า Power BI เพื่อสร้าง Dashboard ที่สวยงามและโต้ตอบได้ โดยใช้ DAX คำนวณตัวชี้วัดตามสูตรมาตรฐาน ILPI
📥

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 (% ต่อยอดขาย)

ILPI1 — การพยากรณ์ความต้องการ
// ILPI1C: สัดส่วนต้นทุนการพยากรณ์ต่อยอดขาย ILPI1_CostPct = VAR staff = MAX(ILPI[staff]) VAR days = MAX(ILPI[days]) VAR salary = MAX(ILPI[salary]) VAR revenue = MAX(ILPI[revenue]) RETURN DIVIDE(staff * days * (salary / 30) * 12, revenue) * 100
ILPI2 — การบริการลูกค้า (DIFOT)
// ILPI2R: DIFOT — อัตราส่งมอบครบตรงเวลา ILPI2_DIFOT = VAR total = MAX(ILPI[total_orders]) VAR complete = MAX(ILPI[complete_orders]) VAR ontime = MAX(ILPI[ontime_orders]) RETURN DIVIDE(complete, total) * DIVIDE(ontime, total) * 100
ILPI7 — สินค้าคงคลัง (DOS)
// ILPI7T: Days of Supply — ระยะเวลาเก็บสินค้าคงคลัง ILPI7_DOS = VAR inv_value = MAX(ILPI[inventory_value]) VAR cogs = MAX(ILPI[cogs]) RETURN DIVIDE(inv_value, cogs) * 365
ILPI8 — การขนส่ง
// ILPI8C: สัดส่วนต้นทุนขนส่งรวมต่อยอดขาย ILPI8_TransportCost = VAR total_transport = MAX(ILPI[fuel]) + MAX(ILPI[maintenance]) + MAX(ILPI[depr_truck]) + MAX(ILPI[outsource]) VAR revenue = MAX(ILPI[revenue]) RETURN DIVIDE(total_transport, revenue) * 100

DAX สำหรับ YoY Comparison (เปรียบเทียบระหว่างปี)

// เปรียบเทียบ DIFOT ปีนี้ vs ปีที่แล้ว DIFOT_YoY_Change = VAR this_year = [ILPI2_DIFOT] VAR last_year = CALCULATE( [ILPI2_DIFOT], SAMEPERIODLASTYEAR(DateTable[Date]) ) RETURN IF( NOT ISBLANK(last_year), this_year - last_year, BLANK() )

แนะนำ 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