แชร์ผ่าน


Table.TransformColumns

วากยสัมพันธ์

Table.TransformColumns(
    table as table,
    transformOperations as list,
    optional defaultTransformation as nullable function,
    optional missingField as nullable number
) as table

ประมาณ

แปลงตารางที่ระบุโดยใช้การดําเนินการแต่ละคอลัมน์ในรายการ

  • table: ตารางที่จะแปลง
  • transformOperations: การแปลงที่จะทํากับตาราง รูปแบบของพารามิเตอร์นี้คือ { ชื่อคอลัมน์ การแปลง } หรือ { ชื่อคอลัมน์ การแปลง ชนิดคอลัมน์ใหม่ }
  • defaultTransformation: (ไม่บังคับ) การแปลงเริ่มต้นที่ใช้กับคอลัมน์ทั้งหมดที่ไม่ได้ระบุไว้ในtransformOperations
  • missingField: (ไม่บังคับ) ระบุการดําเนินการที่คาดไว้สําหรับค่าที่ขาดหายไป หากคอลัมน์ที่แสดงใน transformOperations ไม่มีอยู่ แสดงว่ามีข้อผิดพลาดเกิดขึ้น (MissingField.Error) เว้นแต่ว่าพารามิเตอร์นี้ระบุทางเลือก ใช้ค่าใดค่าหนึ่งต่อไปนี้:
    • MissingField.UseNull: ฟิลด์ที่ขาดหายไปจะถูกรวมเป็น null ค่า
    • MissingField.Ignore: ฟิลด์ที่ขาดหายไปจะถูกละเว้น

ตัวอย่างที่ 1

แปลงค่าข้อความในคอลัมน์ [A] เป็นค่าตัวเลขและค่าตัวเลขในคอลัมน์ [B] เป็นค่าข้อความ

การใช้งาน

Table.TransformColumns(
    Table.FromRecords({
        [A = "1", B = 2],
        [A = "5", B = 10]
    }),
    {
        {"A", Number.FromText},
        {"B", Text.From}
    }
)

ผลลัพธ์ของ

Table.FromRecords({
    [A = 1, B = "2"],
    [A = 5, B = "10"]
})

ตัวอย่างที่ 2

แปลงค่าตัวเลขในคอลัมน์ที่ขาดหายไป [X] เป็นค่าข้อความ โดยค่าเริ่มต้นเป็น null คอลัมน์ที่ไม่มีอยู่จริง

การใช้งาน

Table.TransformColumns(
    Table.FromRecords({
        [A = "1", B = 2],
        [A = "5", B = 10]
    }),
    {"X", Number.FromText},
    null,
    MissingField.UseNull
)

ผลลัพธ์ของ

Table.FromRecords({
    [A = "1", B = 2, X = null],
    [A = "5", B = 10, X = null]
})

ตัวอย่างที่ 3

เพิ่มค่าตัวเลขในคอลัมน์ [B] และแปลงเป็นค่าข้อความ และแปลงคอลัมน์อื่นทั้งหมดเป็นตัวเลข

การใช้งาน

Table.TransformColumns(
    Table.FromRecords({
        [A = "1", B = 2],
        [A = "5", B = 10]
    }),
    {"B", each Text.From(_ + 1), type text},
    Number.FromText
)

ผลลัพธ์ของ

Table.FromRecords({
    [A = 1, B = "3"],
    [A = 5, B = "11"]
})

ตัวอย่างที่ 4

ย้ายงานบํารุงรักษาตามกําหนดการที่เกิดขึ้นในวันหยุดของสหรัฐฯ ไปยังวันถัดไป หรือหากวันหยุดเกิดขึ้นในวันศุกร์ ไปยังวันจันทร์ถัดไป

การใช้งาน

let
    MaintenanceSchedule = #table(type table [Task = text, Date = date],
    {
        {"HVAC Check", #date(2025, 7, 10)},         // Not a holiday
        {"Window Washing", #date(2025, 9, 1)},      // Labor Day
        {"Fire Drill", #date(2025, 9, 17)},         // Not a holiday
        {"Light Replacement", #date(2025, 11, 27)}  // Thanksgiving
    }),
    USHolidays = {
        #date(2025, 1, 1),   // New Year's Day
        #date(2025, 7, 4),   // Independence Day
        #date(2025, 9, 1),   // Labor Day
        #date(2025, 11, 27), // Thanksgiving
        #date(2025, 12, 25)  // Christmas
    },
    AdjustedSchedule = Table.TransformColumns(
        MaintenanceSchedule,
        {{"Date", each if List.Contains(USHolidays, _) then
            if Date.DayOfWeek(_, Day.Sunday) = 5 then
                Date.AddDays(_, 3)     // Friday to Monday
            else 
                Date.AddDays(_, 1)     // Other to next day
        else _, type date}}
    )
in
    AdjustedSchedule

ผลลัพธ์ของ

#table(type table[Task = text, Date = date],
{
    {"HVAC Check", #date(2025, 7, 10)},
    {"Window Washing", #date(2025, 9, 2)},
    {"Fire Drill", #date(2025, 9, 17)},
    {"Light Replacement", #date(2025, 11, 28)}
})