Excel DAX - การทำงานกับข้อความและวันที่
สามารถใช้ DAX ในสถานการณ์ที่เกี่ยวข้องกับการทำงานร่วมกับข้อความการแยกและการเขียนค่าวันที่และเวลาหรือการสร้างค่าตามเงื่อนไข คุณสามารถทำสิ่งต่อไปนี้ด้วย DAX -
- สร้างคอลัมน์หลักในตารางโดยการเรียงต่อกัน
- เขียนวันที่ตามส่วนวันที่ที่ดึงมาจากวันที่ข้อความ
- กำหนดรูปแบบวันที่ที่กำหนดเอง
- เปลี่ยนชนิดข้อมูลโดยใช้สูตร
- แปลงจำนวนจริงเป็นจำนวนเต็ม
- แปลงจำนวนจริงจำนวนเต็มหรือวันที่เป็นสตริง
- แปลงสตริงเป็นจำนวนจริงหรือวันที่
การสร้างคอลัมน์หลักโดยการเชื่อมต่อ
โมเดลข้อมูลใน PowerPivot อนุญาตให้ใช้คอลัมน์คีย์เดียวเท่านั้น ไม่สนับสนุนคีย์คอมโพสิตที่คุณอาจพบในแหล่งข้อมูลภายนอก ดังนั้นหากมีคีย์ผสมใด ๆ อยู่ในตารางในแหล่งข้อมูลคุณจะต้องรวมคีย์เหล่านั้นไว้ในคอลัมน์คีย์เดียวสำหรับตารางในโมเดลข้อมูล
คุณสามารถใช้ฟังก์ชัน DAX CONCATENATE เพื่อรวมสองคอลัมน์เป็นคอลัมน์เดียวในตารางในตัวแบบข้อมูล ฟังก์ชัน DAX CONCATENATE รวมสตริงข้อความสองสตริงเป็นสตริงข้อความเดียว รายการที่รวมอาจเป็นข้อความตัวเลขหรือค่าบูลีนที่แสดงเป็นข้อความหรือรวมกันของรายการเหล่านั้น คุณยังสามารถใช้การอ้างอิงคอลัมน์หากคอลัมน์มีค่าที่เหมาะสม
= CONCATENATE ([Column1], [Column2])
ฟังก์ชัน DAX CONCATENATE ยอมรับเพียงสองอาร์กิวเมนต์ หากอาร์กิวเมนต์ใด ๆ ไม่ใช่ประเภทข้อมูลข้อความอาร์กิวเมนต์นั้นจะถูกแปลงเป็นข้อความ ฟังก์ชัน DAX CONCATENATE ส่งกลับสตริงที่ต่อกัน
วันที่ขึ้นอยู่กับวันที่ส่วนที่ดึงมาจากวันที่ข้อความ
Data Model ใน Power Pivot สนับสนุนประเภทข้อมูลวันที่และเวลาสำหรับค่าวันที่และเวลา ฟังก์ชัน DAX ที่ทำงานกับค่าวันที่และ / หรือเวลาต้องการชนิดข้อมูลวันที่และเวลาสำหรับอาร์กิวเมนต์
ถ้าแหล่งข้อมูลของคุณมีวันที่ในรูปแบบอื่นก่อนอื่นคุณต้องแยกส่วนวันที่โดยใช้สูตร DAX และรวมส่วนเหล่านั้นเพื่อสร้างชนิดข้อมูล DAX datetime ที่ถูกต้อง
คุณสามารถใช้ฟังก์ชัน DAX ต่อไปนี้เพื่อแยกและเขียนวันที่ -
DATE - ส่งกลับวันที่ที่ระบุในรูปแบบวันที่และเวลา
DATEVALUE - แปลงวันที่ในรูปแบบข้อความเป็นวันที่ในรูปแบบวันที่และเวลา
TIMEVALUE - แปลงเวลาในรูปแบบข้อความเป็นเวลาในรูปแบบวันที่และเวลา
การกำหนดรูปแบบวันที่แบบกำหนดเอง
สมมติว่าวันที่ในแหล่งข้อมูลของคุณไม่ได้แสดงด้วยรูปแบบมาตรฐาน คุณสามารถกำหนดรูปแบบวันที่ที่กำหนดเองเพื่อให้แน่ใจว่าค่าได้รับการจัดการอย่างถูกต้อง ฟังก์ชัน DAX FORMAT ช่วยให้คุณสามารถแปลงค่าเป็นข้อความตามรูปแบบที่ระบุ
FORMAT (<value>, <format_string>)
ฟังก์ชัน FORMAT ส่งคืนสตริงที่มีค่าที่จัดรูปแบบตามที่กำหนดโดย format_string
คุณสามารถใช้รูปแบบวันที่และเวลาที่กำหนดไว้ล่วงหน้าหรือคุณสามารถสร้างรูปแบบวันที่และเวลาที่ผู้ใช้กำหนดสำหรับอาร์กิวเมนต์ format_string ของฟังก์ชัน FORMAT
ต่อไปนี้เป็นชื่อรูปแบบวันที่และเวลาที่กำหนดไว้ล่วงหน้า หากคุณใช้สตริงอื่นนอกเหนือจากสตริงที่กำหนดไว้ล่วงหน้าสตริงเหล่านี้จะถูกตีความเป็นรูปแบบวันที่และเวลาที่กำหนดเอง
ส. เลขที่ | Format_String และคำอธิบาย |
---|---|
1 | "General Date" แสดงวันที่และ / หรือเวลา ตัวอย่างเช่น 2/10/2015 10:10:32 น |
2 | "Long Date" or "Medium Date" แสดงวันที่ตามรูปแบบวันที่แบบยาว ตัวอย่างเช่นวันพุธที่ 7 มีนาคม 2016 |
3 | "Short Date" แสดงวันที่โดยใช้รูปแบบวันที่แบบสั้น ตัวอย่างเช่น 2/03/2016 |
4 | "Long Time" แสดงเวลาโดยใช้รูปแบบเวลานาน โดยทั่วไปจะประกอบด้วยชั่วโมงนาทีและวินาที ตัวอย่างเช่น 10:10:32 น |
5 | "Medium Time" แสดงเวลาในรูปแบบ 12 ชั่วโมง เช่น 21.30 น |
6 | "Short Time" แสดงเวลาในรูปแบบ 24 ชั่วโมง ตัวอย่างเช่น 14:15 น |
หรือคุณสามารถใช้อักขระในตารางต่อไปนี้เพื่อสร้างรูปแบบวันที่ / เวลาที่ผู้ใช้กำหนด
ส. เลขที่ | ตัวละครและคำอธิบาย |
---|---|
1 | : ตัวคั่นเวลา ตัวคั่นเวลา แยกชั่วโมงนาทีและวินาทีเมื่อจัดรูปแบบค่าเวลา |
2 | / ตัวคั่นวันที่ แยกวันเดือนและปีเมื่อจัดรูปแบบค่าวันที่ |
3 | % ใช้เพื่อระบุว่าควรอ่านอักขระต่อไปนี้เป็นรูปแบบอักษรตัวเดียวโดยไม่คำนึงถึงตัวอักษรต่อท้าย นอกจากนี้ยังใช้เพื่อระบุว่ารูปแบบอักษรตัวเดียวถูกอ่านเป็นรูปแบบที่ผู้ใช้กำหนด |
ต่อไปนี้เป็นรายละเอียดของตัวละครต่างๆ
%d - แสดงวันเป็นตัวเลขโดยไม่มีศูนย์นำหน้า (เช่น 5)
%dd - แสดงวันเป็นตัวเลขโดยมีศูนย์นำหน้า (เช่น 05)
%ddd - แสดงวันเป็นตัวย่อ (เช่นวันอาทิตย์)
%dddd - แสดงวันเป็นชื่อเต็ม (เช่นวันอาทิตย์)
%M - แสดงเดือนเป็นตัวเลขโดยไม่มีศูนย์นำหน้า (เช่นมกราคมแสดงเป็น 1)
%MM - แสดงเดือนเป็นตัวเลขโดยมีศูนย์นำหน้า (เช่นมกราคมแสดงเป็น 01)
%MMM - แสดงเดือนเป็นตัวย่อ (เช่นมกราคมแทนด้วย Jan)
%MMMM - แสดงเดือนเป็นชื่อเดือนเต็ม (เช่นมกราคม)
%gg - แสดงสตริงช่วงเวลา / ยุค (เช่น AD)
%h- แสดงชั่วโมงเป็นตัวเลขโดยไม่มีศูนย์นำหน้าโดยใช้นาฬิกา 12 ชั่วโมง (เช่น 13:15:15 น.) ใช้%h หากนี่เป็นอักขระเดียวในรูปแบบตัวเลขที่ผู้ใช้กำหนดเอง
%hh - แสดงชั่วโมงเป็นตัวเลขโดยมีเลขศูนย์นำหน้าโดยใช้นาฬิกา 12 ชั่วโมง (เช่น 01:15:15 น.)
%H- แสดงชั่วโมงเป็นตัวเลขโดยไม่มีเลขศูนย์นำหน้าโดยใช้นาฬิกาแบบ 24 ชั่วโมง (เช่น 13:15:15, 1:15:15) ใช้% H ถ้านี่เป็นอักขระตัวเดียวในรูปแบบตัวเลขที่ผู้ใช้กำหนดเอง
%HH - แสดงชั่วโมงเป็นตัวเลขโดยมีเลขศูนย์นำหน้าโดยใช้นาฬิกาแบบ 24 ชั่วโมง (เช่น 13:15:15, 1:15:15)
%m- แสดงนาทีเป็นตัวเลขโดยไม่มีเลขศูนย์นำหน้า (เช่น 2: 1: 15) ใช้% m หากนี่เป็นอักขระเดียวในรูปแบบตัวเลขที่ผู้ใช้กำหนดเอง
%mm - แสดงนาทีเป็นตัวเลขโดยมีเลขศูนย์นำหน้า (เช่น 2:01:15 น.)
%s- แสดงวินาทีเป็นตัวเลขโดยไม่มีเลขศูนย์นำหน้า (เช่น 2: 15: 5) ใช้% s หากเป็นอักขระเดียวในรูปแบบตัวเลขที่ผู้ใช้กำหนดเอง
%ss - แสดงวินาทีเป็นตัวเลขที่มีเลขศูนย์นำหน้า (เช่น 2:15:05)
%f- แสดงเศษส่วนของวินาที สำหรับเช่นff แสดงวินาทีที่ร้อยในขณะที่ ffffแสดงหนึ่งในพันวินาที คุณสามารถใช้ได้ถึงเจ็ดfสัญลักษณ์ในรูปแบบที่ผู้ใช้กำหนดเอง ใช้%f หากนี่เป็นอักขระเดียวในรูปแบบตัวเลขที่ผู้ใช้กำหนดเอง
%t- ใช้นาฬิกา 12 ชั่วโมงและแสดงตัวพิมพ์ใหญ่ A เป็นเวลาหนึ่งชั่วโมงก่อนเที่ยง แสดง P ตัวพิมพ์ใหญ่สำหรับชั่วโมงใดก็ได้ระหว่างเที่ยงถึง 23.59 น. ใช้% t หากนี่เป็นอักขระตัวเดียวในรูปแบบตัวเลขที่ผู้ใช้กำหนดเอง
%tt- สำหรับภาษาที่ใช้นาฬิกา 12 ชั่วโมงจะแสดง AM ตัวพิมพ์ใหญ่พร้อมกับชั่วโมงก่อนเที่ยง แสดง PM ตัวพิมพ์ใหญ่พร้อมชั่วโมงระหว่างเที่ยงถึง 23.59 น. สำหรับภาษาที่ใช้นาฬิกาแบบ 24 ชั่วโมงจะไม่แสดงอะไรเลย
%y- แสดงหมายเลขปี (0-9) โดยไม่มีเลขศูนย์นำหน้า ใช้%y หากนี่เป็นอักขระเดียวในรูปแบบตัวเลขที่ผู้ใช้กำหนดเอง
%yy - แสดงปีในรูปแบบตัวเลขสองหลักโดยมีศูนย์นำหน้าหากมี
%yyy - แสดงปีในรูปแบบตัวเลขสี่หลัก
%yyyy - แสดงปีในรูปแบบตัวเลขสี่หลัก
%z- แสดงเขตเวลาชดเชยโดยไม่มีศูนย์นำหน้า (เช่น -8) ใช้%z หากนี่เป็นอักขระเดียวในรูปแบบตัวเลขที่ผู้ใช้กำหนดเอง
%zz- แสดงไฟล์. เขตเวลาชดเชยด้วยศูนย์นำหน้า (เช่น -08)
%zzz - แสดงการชดเชยเขตเวลาแบบเต็ม (เช่น -08: 00)
ดังที่คุณสังเกตได้การจัดรูปแบบสตริงจะคำนึงถึงขนาดตัวพิมพ์ การจัดรูปแบบต่างๆสามารถทำได้โดยใช้กรณีอื่น
การเปลี่ยนชนิดข้อมูลของผลลัพธ์ของสูตร DAX
ในสูตร DAX ชนิดข้อมูลของผลลัพธ์จะถูกกำหนดโดยคอลัมน์ต้นทางและคุณไม่สามารถระบุชนิดข้อมูลของผลลัพธ์ได้อย่างชัดเจน เนื่องจากประเภทข้อมูลที่เหมาะสมที่สุดถูกกำหนดโดย Power Pivot อย่างไรก็ตามคุณสามารถใช้การแปลงประเภทข้อมูลโดยนัยที่ดำเนินการโดย Power Pivot เพื่อจัดการกับประเภทข้อมูลเอาต์พุต มิฉะนั้นคุณสามารถใช้ฟังก์ชัน DAX บางอย่างเพื่อแปลงชนิดข้อมูลเอาต์พุตได้
Using the Implicit Data Type Conversions
ในการแปลงวันที่หรือสตริงตัวเลขเป็นตัวเลขให้คูณด้วย 1.0 ตัวอย่างเช่น = (TODAY () + 5) * 1.0 สูตรนี้คำนวณวันที่ปัจจุบันบวก 5 วันและแปลงผลลัพธ์เป็นค่าจำนวนเต็ม
หากต้องการแปลงค่าวันที่ตัวเลขหรือสกุลเงินเป็นสตริงให้เชื่อมต่อค่าด้วยสตริงว่าง ตัวอย่างเช่น = Today () &“”
Using the DAX Functions for Data Type Conversions
คุณสามารถใช้ฟังก์ชัน DAX สำหรับสิ่งต่อไปนี้ -
- การแปลงจำนวนจริงเป็นจำนวนเต็ม
- การแปลงจำนวนจริงจำนวนเต็มหรือวันที่เป็นสตริง
- การแปลงสตริงเป็นตัวเลขจริงหรือวันที่
คุณจะได้เรียนรู้สิ่งนี้ในส่วนต่อไปนี้
การแปลงจำนวนจริงเป็นจำนวนเต็ม
คุณสามารถใช้ฟังก์ชัน DAX ต่อไปนี้สำหรับการแปลงจำนวนจริงเป็นจำนวนเต็ม -
ROUND (<number>, <num_digits>) - ปัดเศษตัวเลขเป็นจำนวนหลักที่ระบุและส่งกลับตัวเลขทศนิยม
CEILING (<number>, <significance>) - ปัดเศษตัวเลขขึ้นเป็นจำนวนเต็มที่ใกล้เคียงที่สุดหรือเป็นจำนวนนับที่ใกล้เคียงที่สุดของนัยสำคัญและส่งกลับตัวเลขทศนิยม
FLOOR (<number>, <significance>) - ปัดเศษตัวเลขลงไปที่ศูนย์เป็นจำนวนนับที่ใกล้เคียงที่สุดของนัยสำคัญและส่งกลับตัวเลขทศนิยม
การแปลงจำนวนจริงจำนวนเต็มหรือวันที่เป็นสตริง
คุณสามารถใช้ฟังก์ชัน DAX ต่อไปนี้สำหรับการแปลงจำนวนจริงจำนวนเต็มหรือวันที่เป็นสตริง -
FIXED (<number>, [<decimals>], [<no_comma>])- ปัดเศษตัวเลขและส่งกลับผลลัพธ์เป็นข้อความ จำนวนหลักทางขวาของจุดทศนิยมคือ 2 หรือจำนวนทศนิยมที่ระบุ ผลลัพธ์จะมีเครื่องหมายจุลภาคหรือไม่บังคับโดยไม่มีเครื่องหมายจุลภาค
FORMAT (<value>, <format_string>) - แปลงค่าเป็นข้อความตามรูปแบบที่กำหนด
คุณได้เรียนรู้เกี่ยวกับการใช้ฟังก์ชัน Format สำหรับการแปลงวันที่เป็นสตริงแล้ว
การแปลงสตริงเป็นตัวเลขจริงหรือวันที่
คุณสามารถใช้ฟังก์ชัน DAX ต่อไปนี้สำหรับการแปลงสตริงเป็นจำนวนจริงหรือวันที่ -
VALUE (<text>) - แปลงสตริงข้อความที่แสดงตัวเลขเป็นตัวเลข
DATEVALUE (date_text) - แปลงวันที่ในรูปแบบข้อความเป็นวันที่ในรูปแบบวันที่และเวลา
TIMEVALUE (time_text) - แปลงเวลาในรูปแบบข้อความเป็นเวลาในรูปแบบวันที่และเวลา