DATEVALUE แปลงข้อความวันที่ (text) ให้เป็น datetime โดยอ้างอิงตามการตั้งค่า locale ของ model เหมาะกับข้อมูลวันที่ที่เก็บเป็นข้อความและต้องแปลงเป็นวันที่จริงเพื่อการคำนวณตามเวลา
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| DateText | Text | ข้อความที่เป็นวันที่ เช่น “2025-12-31”, “31/12/2025”, “12/31/2025” ระบบจะตีความตามรูปแบบ locale ของ model |
DATEVALUE ใช้แปลงข้อความที่เป็นวันที่ (text string) ให้เป็นค่า datetime ที่สามารถนำไปใช้ในการคำนวณตามเวลา
ที่เจ๋งของ DATEVALUE คือมันมีฟังก์ชันการยอนหนี้อัจฉริยะ (intelligent fallback) – ถ้าตีความวันที่ตามรูปแบบ locale ไม่สำเร็จ มันจะลองตีความในรูปแบบอื่นเองโดยไม่ error ทำให้ข้อมูลที่ “ไม่บริสุทธิ์” ยังสามารถแปลงได้ สำคัญอย่างไร คือ DATEVALUE มี locale-dependent behavior – “1/8/2009” อาจเป็น January 8 หรือ August 1 ขึ้นอยู่ว่า model ตั้งค่า M/D/Y (US) หรือ D/M/Y (EU)
ส่วนตัวผมคิดว่า DATEVALUE มีประโยชน์สุดเมื่อ import ข้อมูลจากระบบอื่น (CSV, Excel, API) ที่วันที่ถูกเก็บเป็นข้อความ แล้วต้องการให้สามารถคำนวณตามเวลาได้ หรือสร้าง relationship กับ Date Table โดยไม่ต้องไปแก้ไขที่ source 😎
เช่น วันที่ถูกนำเข้ามาเป็น string ต้องแปลงเพื่อทำ Time Intelligence
แปลงข้อความวันที่ให้เป็นวันที่จริงก่อนใช้กับสูตรวัดระยะเวลา
แปลงข้อความ "2025-12-31" ให้เป็น datetime type ที่สามารถใช้ในการคำนวณตามเวลาได้ เช่น การเปรียบเทียบวันที่ หรือการคำนวณจำนวนวันระหว่างวันที่
เมื่อข้อมูล import มาวันที่อยู่ในคอลัมน์ string เช่น OrderDateText ใช้ DATEVALUE ในคอลัมน์ calculated เพื่อแปลงทุกแถว แล้วตั้งเป็น Foreign Key ไปยัง Date Table
แปลงวันที่จากข้อความทั้งสองคอลัมน์ก่อน แล้วค่อยใช้ DATEDIFF คำนวณระยะห่างระหว่างสองวันที่ โดยระบุหน่วยเป็น DAY เพื่อให้ได้ผลลัพธ์เป็นจำนวนวัน
DATEVALUE มีฟังก์ชันการยอนหนี้ที่ฉลาด ถ้ารูปแบบ locale ไม่ตรง มันจะลองวิธีอื่นเอง โดยตัวอย่าง "20/4/2018" ไม่อาจเป็น May 20 (ถ้า M/D/Y locale) เพราะเดือนไม่มี 20 ดังนั้นโปรแกรมจึงตีความให้เป็น April 20 อัตโนมัติ
แปลงข้อความเป็น datetime แล้วใช้ใน CALCULATE เพื่อ override filter context โดยเปรียบเทียบกับคอลัมน์ OrderDate ที่เป็น datetime จริงแล้ว ซึ่งทำให้สามารถกำหนด cutoff date แบบไดนามิก
ถ้าข้อความไม่มีปี DATEVALUE จะใช้ปีจากนาฬิการะบบของเครื่องปัจจุบัน โดยทั่วไปไม่ต้องใช้แบบนี้เพราะสูตรอาจให้ผลไม่แน่นอนตามเวลา
มักเกิดจากข้อความไม่ใช่รูปแบบวันที่ที่ถูกต้อง (เช่น "abc", "13/32/2025") หรือรูปแบบไม่สามารถตีความได้แม้ว่า fallback ก็ตาม ควรตรวจสอบข้อมูล input และใช้ IFERROR เพื่อจัดการ error หรือข้อมูลที่ไม่ชัดเจน
DATEVALUE แปลงจากข้อความ (text) ส่วน DATE สร้างวันที่จากตัวเลข Year/Month/Day ถ้าข้อมูลต้นฉบับเป็นข้อความใช้ DATEVALUE ถ้าเป็นตัวเลขแยกกันใช้ DATE
Locale คือการตั้งค่าภูมิศาสตร์/ภาษาของ model เช่น en-US (M/D/Y), en-GB (D/M/Y), th-TH เป็นต้น DATEVALUE ใช้ locale นี้เพื่อตีความรูปแบบวันที่ "1/2/2025" อาจเป็น January 2 หรือ February 1 ขึ้นอยู่ locale ดังนั้นถ้าข้อมูลมาจากนอกประเทศต้องระวัง
DATEVALUE แปลงข้อความเป็นวันที่ส่วน TIMEVALUE แปลงข้อความเป็นเวลา (time only) ถ้าต้องการ timestamp เต็มควรใช้ DATEVALUE
DATEVALUE จะเพิกเฉยต่อส่วนเวลา ดังนั้น "2025-12-31 14:30:00" จะแปลงเป็น 31/12/2025 (เลิกไปส่วน 14:30:00) ถ้าต้องเวลาด้วยต้องใช้ DATETIMEVALUE หรือ TIMEVALUE แยกต่างหาก
ใช่ DAX รองรับ literal date syntax เช่น dt"2025-12-31" ซึ่งชัดเจนกว่าและไม่ต้องใช้ DATEVALUE สำหรับวันที่คงที่ แต่สำหรับข้อมูลจากคอลัมน์ยังต้องใช้ DATEVALUE
ใช่ DATEVALUE รองรับ DirectQuery สำหรับ measures และ calculated columns ในทุกโหมด Power BI, Excel, SSAS Tabular, Azure Analysis Services
ฟังก์ชันที่ผู้เขียนโยงไว้กับ DATEVALUE จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
CALENDAR ใช้สำหรับสร้างตารางวันที่ครบถ้วนตั้งแต่วันเริ่มต้นถึงวันสิ้นสุดโดยไม่มีช่องว่าง เหมาะสำหรับสร้างตารางวันที่โครงสร้างพื้นฐาน (Date Dimension) ที่ใช้ร่วมกับ Time Intelligence Function
DATE สร้างค่าวันที่จากตัวเลข Year/Month/Day แล้วคืนค่าเป็นชนิด datetime เหมาะกับการประกอบวันที่จากคอลัมน์แยกส่วนหรือสร้างวันที่อ้างอิง เช่น วันแรกของเดือน วันตัดยอด
DATEDIFF คำนวณจำนวนช่วงเวลา (วัน, สัปดาห์, เดือน, ปี ฯลฯ) ระหว่างสองวันที่ด้วยการนับจำนวนครั้งที่ข้ามขอบเขตของช่วงเวลา เป็นฟังก์ชันพื้นฐานสำหรับการคำนวณอายุ, ระยะเวลา, และการวิเคราะห์เวลา
DAY คืนค่าเลขวันของเดือนจากค่าวันที่/เวลา (1–31) เป็นฟังก์ชันพื้นฐานสำหรับการวิเคราะห์ตามวันของเดือน การจัดกลุ่ม และการสร้างคอลัมน์ช่วย
MONTH ดึงเลขเดือน (integer 1-12) จากค่า datetime โดยรับ input เป็น datetime value, column reference, หรือ text representation ของวันที่ และคืนค่าตั้งแต่ 1 (มกราคม) ถึง 12 (ธันวาคม) ตาม Gregorian calendar ใช้สร้าง calculated column ใน Date table เพื่อเป็น sort column สำหรับชื่อเดือน และใช้ใน measure เพื่อสร้าง conditional logic กับ custom time intelligence calculations
WEEKDAY คืนค่าเลขวันในสัปดาห์ (1-7) จากวันที่ที่กำหนด สามารถปรับรูปแบบให้เริ่มจากอาทิตย์หรือจันทร์ได้ตามต้องการ เหมาะสำหรับการแยกวันทำงาน วันหยุด หรือวิเคราะห์พฤติกรรมตามวัน
ดึงปีจากวันที่ในรูปแบบตัวเลข 4 หลัก สำหรับวิเคราะห์ข้อมูลตามปี
VALUE แปลงข้อความที่แทนตัวเลขให้เป็นตัวเลข (decimal) เหมาะสำหรับข้อมูลนำเข้าที่ตัวเลขถูกเก็บเป็นข้อความหรือข้อมูลที่ไม่ทำความสะอาดอย่างถูกต้อง
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่