Value.Type คืนค่า Type ของข้อมูลที่กำหนด ช่วยตรวจสอบว่าเป็น number, text, date, table, list หรือชนิดอื่นๆ มีประโยชน์มากสำหรับ data validation และการเขียน dynamic functions
= Value.Type(value as any) as type
= Value.Type(value as any) as type
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| value | any | Yes | ค่าหรือข้อมูลใดๆ ที่ต้องการตรวจสอบชนิด เป็น any type ก็ได้ (number, text, list, table, record, null, ฯลฯ) |
เช็คว่าค่าในคอลัมน์นี้เป็นตัวเลขหรือข้อความ เพื่อเลือกวิธีการจัดการที่เหมาะสม
เขียนฟังก์ชันที่ทำงานต่างกันตามชนิดข้อมูลที่รับเข้ามา (Polymorphic Function)
Value.Type(123)=Value.Type(123)
type number
Value.Type("Hello World")=Value.Type("Hello World")
type text
Value.Type(#date(2025, 12, 25))=Value.Type(#date(2025, 12, 25))
type date
Value.Type({1, 2, 3})=Value.Type({1, 2, 3})
type list
Value.Type([Name = "Sira", Age = 30])=Value.Type([Name = "Sira", Age = 30])
type record
Value.Type(null)=Value.Type(null)
type null
Value.Type(true)=Value.Type(true)
type logical
let Input = "12345", CheckType = Value.Type(Input), Result = if CheckType = type text then Number.From(Input) else Input in Resultlet
Input = "12345",
CheckType = Value.Type(Input),
Result = if CheckType = type text then Number.From(Input) else Input
in
Result
12345 (แปลงเป็น number)
let MyFunction = (value) => let TypeCheck = Value.Type(value) in if TypeCheck = type number then "It's a number: " & Text.From(value) else if TypeCheck = type t…let
MyFunction = (value) =>
let
TypeCheck = Value.Type(value)
in
if TypeCheck = type number then "It's a number: " & Text.From(value)
else if TypeCheck = type text then "It's text: " & value
else if TypeCheck = type list then "It's a list with " & Text.From(List.Count(value)) & " items"
else "Unknown type"
Test1 = MyFunction(42),
Test2 = MyFunction("Hello"),
Test3 = MyFunction({1, 2, 3})
in
{Test1, Test2, Test3}
{"It's a number: 42", "It's text: Hello", "It's a list with 3 items"}
Value.Type คืนค่า type ที่เป็น actual type ของ value ออกมา เช่น type number, type text ส่วน Value.Is คืนค่า true/false เพื่อตรวจสอบว่า value เป็น type ที่ระบุหรือไม่ เช่น Value.Is(123, type number) = true ผมแนะนำให้ใช้ Value.Type เมื่อต้องรู้ว่า value เป็นชนิดอะไร และใช้ Value.Is เมื่อต้องเช็คว่า value เป็น specific type ที่คาด หรือไม่
Value.Type(null) คืนค่า type null กลับมา เป็น type ที่ represent ค่า null หรือค่าว่าง ผมเคยใช้อันนี้ในการตรวจสอบว่า query กลับค่ามา null จากการ process ข้อมูล
Value.Type มีประโยชน์เมื่อต้องทำสิ่งที่ต่างๆ ขึ้นอยู่กับชนิดข้อมูล (multiple conditions) เพราะสามารถ store type ไว้ในตัวแปร แล้ว compare ได้หลายครั้ง ส่วน Value.Is นั้นเป็น shorthand สำหรับการเช็คชนิด specific เพียง 1 ครั้ง ผมชอบใช้ Value.Type ใน custom functions ที่ต้องรองรับ input หลายชนิด
ได้ครับ Value.Type ใช้ได้กับ table Type คืนค่า type table กลับมา แต่ถ้าต้องรู้ว่า table มี column อะไรบ้าง หรือ schema เป็นอย่างไร ต้องใช้ Table.Schema() แทน
Value.Type นั้นเป็น lightweight operation ไม่มี performance issue ผมใช้มันในการ validate data แบบ row-by-row ก็ไม่เห็นปัญหา แต่ถ้าต้องเช็ค type ของข้อมูลหลาย millions rows อาจจะควร cache type check ขั้นบน level ของ table schema แทนจะดีกว่า
Value.Type เป็นฟังก์ชันสำคัญใน Power Query ที่ใช้ตรวจสอบชนิดข้อมูล (Data Type) ของค่าใดๆ ว่าเป็น type text, type number, type date, type table, type list, type record, type null, type logical หรือชนิดอื่นๆ
ที่เจ๋งคือสามารถใช้ Value.Type เพื่อเขียน custom functions ที่ work ได้กับ input หลายชนิด (polymorphic functions) ได้ เหมาะสำหรับสถานการณ์ที่ข้อมูลมาจากหลายแหล่งที่มี structure ไม่เหมือนกัน
ส่วนตัวผมใช้ Value.Type เมื่อต้องเขียน error handling หรือต้องรู้ว่าค่ากลับมาจากการแปลงข้อมูลเป็นชนิดอะไร เช่น Text.From คืนค่ามาเป็น text แล้วจริงหรือเปล่า 😎