“อยากแสดงวันที่ปัจจุบันเป็นภาษาไทยใน Power BI ต้องทำยังไงคะ?”
“ตอนนี้ใช้ฟังก์ชัน TODAY() บางครั้งได้ผลลัพธ์เป็นภาษาไทย บางครั้งได้ผลลัพธ์เป็นภาษาอังกฤษ ควรปรับยังไงดีคะ?”
คำถามนี้สะกิด “ต่อมอยากรู้” ของผมอย่างจัง จนต้องเปิดคอมพ์ขึ้นมาทดลองทันที
ทดลองแล้วเป็นไงน่ะหรือครับ?
ขอ 2 นาทีได้ไหม อยากเล่าให้ฟัง ^__^
ถ้าเจอปัญหานี้ใน Excel แก้ได้ง่ายมาก
แค่ใช้ฟังก์ชัน TODAY() แล้วปรับ Custom Number Format เป็น dd ดดดด bbbb
จบ!

หรือถ้าต้องการเปลี่ยนค่าที่แท้จริงเป็นวันที่ปัจจุบันที่เป็นตัวหนังสือ ก็ใช้สูตร
=TEXT( TODAY(), “dd ดดดด bbbb” )
จบ!

แต่ถ้าเจอปัญหานี้ใน Power BI แก้ด้วยวิธีแบบนี้ไม่ได้
เหตุผลมี 3 ข้อ
1. Power BI ปรับ Customer Number Format แบบอิสระไม่ได้
ตอนนี้ยังปรับไม่ได้ แต่อนาคตอาจมีการเปลี่ยนแปลง
2. Power BI (DAX) ไม่มีฟังก์ชัน TEXT
แต่มีฟังก์ชันที่ใกล้เคียงคือ FORMAT
3. ฟังก์ชัน FORMAT ไม่รองรับ “ดดด” หรือ locale code
ฟังก์ชัน FORMAT มีรายละเอียดปลีกย่อยที่แตกต่างจากฟังก์ชัน TEXT ใน Excel พอสมควร เช่น
ไม่รองรับ “ดดด” (รวมถึง “วว”, “ปปปป”)
ไม่รองรับโค้ดปีพุทธศักราช (bbbb)
และไม่รองรับ locale code
(locale code ของภาษาไทยคือ [$-41E] หรือ [$-th-TH]
ถ้าเป็น Excel รองรับโค้ดพวกนี้แบบชิลๆ ไม่ว่าจะเป็น
TEXT( TODAY(), “[$-41E]mmmm” )

หรือ TEXT( TODAY(), “[$-th-TH]mmmm” )

แต่ Power BI ทำแบบนั้นไม่ได้
มันก็เลยเศร้าๆนิดนึง T_T
แล้วถ้าใช้ฟังก์ชัน TODAY() ล่ะ?
ถ้าใช้ฟังก์ชัน TODAY() ตรงๆ อาจได้ผลลัพธ์แบบนี้

หรือแบบนี้

ทำไมได้ผลลัพธ์ไม่เหมือนกัน?
เพราะการแสดงรูปแบบของวันที่และภาษาใน Power BI ขึ้นกับการเซ็ตค่า Region ใน Windows
ถ้าเซ็ตเป็น Thai จะได้รูปแบบวันที่เป็นภาษาไทย

แต่ถ้าเซ็ตเป็นอังกฤษ จะได้รูปแบบวันที่เป็นภาษาอังกฤษ

“งั้นก็เซ็ต Region เป็น Thai เลยดีไหม ปัญหาจะได้จบ?”
ถ้าเราเซ็ต Region เป็นภาษาไทย แต่หัวหน้าเซ็ตเป็นภาษาอังกฤษ เค้าก็เห็นวันที่เป็นภาษาอังกฤษอยู่ดี ปัญหาไม่ได้ถูกแก้
(โดยส่วนตัวแล้วแนะนำให้เซ็ต Region เป็นภาษาอังกฤษเพื่อป้องกันปัญหาปลีกย่อยอื่นๆ)
แก้ปัญหาด้วยสูตร DAX น่าจะดีที่สุด
แก้ยังไงน่ะหรือครับ?
ลองคิดง่ายๆก่อน โดยมองผลลัพธ์ที่ต้องการ
สมมติต้องการผลลัพธ์เป็น
30 ตุลาคม 2562
ถ้าเขียนสูตรเพื่อหา
1. 30
2. ตุลาคม
3. 2562
แล้วจับ 1, 2, 3 มาเชื่อมกันก็จบ จริงไหม
30 หาได้ง่ายมาก ด้วยสูตร
DAY( TODAY() )
2562 หาได้ง่ายมาก ด้วยสูตร
YEAR( TODAY() ) + 543
ปัญหาคือ ตุลาคม ไม่มีสูตรสำเร็จ ต้องคิดสูตรขึ้นมาเอง
แต่ละคนอาจคิดสูตรไม่เหมือนกัน
สำหรับผมคิดแบบนี้ครับ
เริ่มจากหาเลขเดือนขึ้นมาก่อน จากนั้นก็แปลงเลขเดือนเป็น
1 = มกราคม
2 = กุมภาพันธ์
…
…
12 = ธันวาคม
การหาเลขเดือน 1, 2 .. 12 ทำได้ง่ายมากด้วยสูตร
MONTH( TODAY() )
แต่การแปลง 1 เป็น มกราคม นั้นไม่ง่าย
ถ้าใช้ IF ต้องใช้ IF ซ้อนกัน 11 ชั้น
บ้าไปแล้ว!
แล้วจะทำยังไง?
ฟังก์ชัน SWITCH เกิดมาเพื่อสิ่งนี้
โครงสร้างของฟังก์ชัน SWITCH คือ
SWITCH( Expression, Value1, Result1, [Value2], [Result2], … , [Else] )
อ้อ! ฟังก์ชัน SWITCH มีทั้งใน DAX และ Excel นะครับ โครงสร้างเหมือนกันเป๊ะเลย (ถ้าใช้ใน Excel ใช้ได้เฉพาะ Office 365 และ Excel 2019)
เคสนี้มอง Expression เป็นเลขเดือน 1-12 หรือก็คือ MONTH( TODAY() )
ถ้า Value1 เป็น 1 ก็แสดง Result1 เป็น มกราคม
ถ้า Value2 เป็น 2 ก็แสดง Result2 เป็น กุมภาพันธ์
หรือเขียนสูตรหาคำว่า ตุลาคม ได้เป็น

ได้ “ตัวละคร” ครบแล้ว จากนั้นจับมาเชื่อมกันด้วย &
แต่…. ถ้าจับมาเชื่อมกันตรงๆ สูตรจะยาวววว มาก แถมอ่านไม่รู้เรื่อง
ทางออกคือ ทำเป็นสเต็ป หรือสร้างตัวแปรขึ้นมาช่วยคำนวณทีละขั้น เช่น
DayNo = DAY( TODAY() )
MonthNo = MONTH( TODAY() )
MonthName = SWITCH (MonthNo, …… )
BuddhistYear = YEAR( TODAY() )+543
แล้วจับมารวมกันเป็น
DayNo & ” ” & MonthThaiName &” ” & BuddhistYear
การจะทำแบบนี้ได้ ต้องใช้ฟังก์ชัน VAR … RETURN
โครงสร้างของ VAR … RETURN คือ
VAR Var1 = สูตรคำนวณ1
VAR Var2 = สูตรคำนวณ2
VAR Var3 = สูตรคำนวณ3
RETURN สูตรคำนวณผลลัพธ์สุดท้ายที่ต้องการ
เคสนี้ใช้ VAR .. RETURN สร้าง Measure เป็น
DateInThai =
VAR DayNo = DAY( TODAY() )
VAR MonthNo = MONTH( TODAY() )
VAR MonthThaiName =
SWITCH(
MonthNo,
1, “มกราคม”,
2, “กุมภาพันธ์”,
3, “มีนาคม”,
4, “เมษายน”,
5, “พฤษภาคม”,
6, “มิถุนายน”,
7, “กรกฎาคม”,
8, “สิงหาคม”,
9, “กันยายน”,
10, “ตุลาคม”,
11, “พฤศจิกายน”,
12, “ธันวาคม”
)
VAR BuddhistYear = YEAR( TODAY() )+543
RETURN DayNo&” “&MonthThaiName&” “&BuddhistYear
สูตรยาวนึดนึง แต่ไม่ยากใช่ไหมครับ ^__^
จากนั้นก็ใช้ Measure นี้ (DateInThai) สร้างเป็น Card

ชะแว๊บ !!

สนุกดีเนอะ ^__^
คราวนี้จะเซ็ต Region เป็นภาษาอะไร ก็ได้วันที่ปัจจุบันเป็นภาษาไทยแน่น๊อน
สำหรับใครที่สนใจไฟล์ตัวอย่างของบทความนี้ ดาวน์โหลดเพื่อศึกษาได้เลยครับ
ไฟล์ Power BI (.pbix) ดาวน์โหลดได้จากลิงค์นี้
https://drive.google.com/file/d/1n_RuHBd45jhTWkWspuRK2krEaoOrKtDs/view?usp=sharing
ไฟล์ Excel (.xlsx) ดาวน์โหลดได้จากลิงค์นี้
ทดลองใช้แล้วเป็นยังไง อย่าลืมเล่าสู่กันฟังนะครับ ^__^
หากคุณชอบบทความแนวนี้ สามารถอัพเดตบทความใหม่ๆโดยคลิก Like เฟสบุ๊คแฟนเพจ วิศวกรรีพอร์ต หรือคลิก ที่นี่
อย่าลืมแชร์ให้เพื่อนอ่านเพื่อเป็นกำลังใจให้คนเขียนด้วยนะครับ ^__^
ผมสร้างตาราง อีกชีท คอลัม a ใส่ตัวเลข ส่วน b ใส่ ชื่อเดือนเป็นภาษาไทย แล้วใช้สูตร vlookup เอาครับ
ขอบคุณครับ