Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Bekerja dengan data teks terkadang bisa berantakan. Misalnya, nama kota Redmond mungkin diwakili dalam database menggunakan casing yang berbeda ("Redmond", "redmond", dan "REDMOND"). Ini dapat menyebabkan masalah saat mengubah data di Power Query karena bahasa rumus Power Query M sensitif terhadap huruf besar/kecil.
Untungnya, Power Query M menyediakan fungsi untuk membersihkan dan menormalkan kasus data teks. Ada fungsi untuk mengonversi teks ke huruf kecil (abc), huruf besar (ABC), atau huruf yang tepat (Abc). Selain itu, Power Query M juga menyediakan beberapa cara untuk mengabaikan kasus sama sekali.
Artikel ini memperlihatkan kepada Anda cara mengubah kapitalisasi kata dalam teks, daftar, dan tabel. Ini juga menjelaskan berbagai cara untuk mengabaikan huruf besar/kecil saat memanipulasi data dalam teks, daftar, dan tabel. Selain itu, artikel ini membahas cara mengurutkan sesuai dengan kasus.
Mengubah huruf besar/kecil dalam teks
Ada tiga fungsi yang mengonversi teks menjadi huruf kecil, huruf besar, dan huruf besar yang tepat. Fungsinya adalah Text.Lower, , Text.Upperdan Text.Proper. Contoh sederhana berikut menunjukkan bagaimana fungsi-fungsi ini dapat digunakan dalam teks.
Mengonversi semua karakter dalam teks menjadi huruf kecil
Contoh berikut menunjukkan cara mengonversi semua karakter dalam string menjadi huruf kecil.
let
Source = Text.Lower("The quick brown fox jumps over the lazy dog.")
in
Source
Kode ini menghasilkan output berikut:
the quick brown fox jumps over the lazy dog.
Mengonversi semua karakter dalam teks menjadi huruf besar
Contoh berikut menunjukkan cara mengonversi semua karakter dalam string teks ke huruf besar.
let
Source = Text.Upper("The quick brown fox jumps over the lazy dog.")
in
Source
Kode ini menghasilkan output berikut:
THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG.
Ubah semua kata menjadi huruf kapital di awal
Contoh berikut menunjukkan cara mengonversi semua kata dalam kalimat menjadi kapitalisasi awal.
let
Source = Text.Proper("The quick brown fox jumps over the lazy dog.")
in
Source
Kode ini menghasilkan output berikut:
The Quick Brown Fox Jumps Over The Lazy Dog.
Mengubah kasus dalam daftar
Saat mengubah kasus dalam daftar, fungsi yang paling umum digunakan adalah List.Transform. Contoh sederhana berikut menunjukkan bagaimana fungsi ini dapat digunakan dalam daftar.
Mengonversi semua item menjadi huruf kecil
Contoh berikut menunjukkan cara mengubah semua item dalam daftar menjadi huruf kecil.
let
Source = {"Squash", "Pumpkin", "ApPlE", "pear", "orange", "APPLE", "Pear", "pear"},
#"Lower Case" = List.Transform(Source, Text.Lower)
in
#"Lower Case"
Kode ini menghasilkan output berikut:
Ubah semua item menjadi huruf besar
Contoh berikut menunjukkan cara mengubah semua item dalam daftar menjadi huruf besar.
let
Source = {"Squash", "Pumpkin", "ApPlE", "pear", "orange", "APPLE", "Pear", "pear"},
#"Upper Case" = List.Transform(Source, Text.Upper)
in
#"Upper Case"
Kode ini menghasilkan output berikut:
Mengonversi semua item ke huruf besar/kecil yang tepat
Contoh berikut menunjukkan cara mengubah semua item dalam daftar menjadi huruf kapital yang benar.
let
Source = {"Squash", "Pumpkin", "ApPlE", "pear", "orange", "APPLE", "Pear", "pear"},
#"Proper Case" = List.Transform(Source, Text.Proper)
in
#"Proper Case"
Kode ini menghasilkan output berikut:
Mengubah huruf besar/kecil dalam tabel
Saat mengubah kasus dalam tabel, fungsi yang paling umum untuk digunakan adalah Table.TransformColumns. Ada juga fungsi yang disebut Table.TransformRows yang dapat Anda gunakan untuk mengubah kapitalisasi teks dalam satu baris. Namun, fungsi ini tidak digunakan sesering mungkin.
Contoh sederhana berikut menunjukkan bagaimana Table.TransformColumns
fungsi dapat digunakan untuk mengubah kasus dalam tabel.
Mengonversi semua item dalam kolom tabel menjadi huruf kecil
Contoh berikut menunjukkan cara mengubah semua item dalam kolom tabel menjadi huruf kecil, dalam hal ini, nama pelanggan.
let
Source = #table(type table [CUSTOMER = text, FRUIT = text],
{
{"Tulga", "Squash"},
{"suSanna", "Pumpkin"},
{"LESLIE", "ApPlE"},
{"Willis", "pear"},
{"Dilbar", "orange"},
{"ClaudiA", "APPLE"},
{"afonso", "Pear"},
{"SErgio", "pear"}
}),
#"Lower Case" = Table.TransformColumns(Source, {"CUSTOMER", Text.Lower})
in
#"Lower Case"
Kode ini menghasilkan output berikut:
Ubah semua item dalam kolom tabel menjadi huruf besar
Contoh berikut menunjukkan cara mengubah semua item dalam kolom tabel menjadi huruf besar, dalam hal ini, nama buah.
let
Source = #table(type table [CUSTOMER = text, FRUIT = text],
{
{"Tulga", "Squash"},
{"suSanna", "Pumpkin"},
{"LESLIE", "ApPlE"},
{"Willis", "pear"},
{"Dilbar", "orange"},
{"ClaudiA", "APPLE"},
{"afonso", "Pear"},
{"SErgio", "pear"}
}),
#"Upper Case" = Table.TransformColumns(Source, {"FRUIT", Text.Upper})
in
#"Upper Case"
Kode ini menghasilkan output berikut:
Mengonversi semua item dalam tabel menjadi huruf kapital yang sesuai
Contoh berikut menunjukkan cara mengubah semua item di kedua kolom tabel menjadi huruf besar/kecil yang tepat.
let
Source = #table(type table [CUSTOMER = text, FRUIT = text],
{
{"Tulga", "Squash"},
{"suSanna", "Pumpkin"},
{"LESLIE", "ApPlE"},
{"Willis", "pear"},
{"Dilbar", "orange"},
{"ClaudiA", "APPLE"},
{"afonso", "Pear"},
{"SErgio", "pear"}
}),
#"Customer Case" = Table.TransformColumns(Source, {"CUSTOMER", Text.Proper}),
#"Proper Case" = Table.TransformColumns(#"Customer Case", {"FRUIT", Text.Proper})
in
#"Proper Case"
Kode ini menghasilkan output berikut:
Mengabaikan kasus
Dalam banyak kasus saat mencari atau mengganti item, Anda mungkin perlu mengabaikan kasus item yang Anda cari. Karena bahasa rumus Power Query M peka huruf besar/kecil, perbandingan antara item yang identik tetapi memiliki kasus yang berbeda menghasilkan identifikasi item yang berbeda, tidak identik. Salah satu metode mengabaikan kasus melibatkan penggunaan Comparer.OrdinalIgnoreCase fungsi dalam fungsi yang menyertakan equationCriteria
parameter atau comparer
parameter. Metode lain untuk mengabaikan kasus melibatkan penggunaan IgnoreCase
opsi (jika tersedia) dalam fungsi yang menyertakan options
parameter.
Mengabaikan kapitalisasi huruf dalam teks
Pencarian dalam teks terkadang mengharuskan Anda mengabaikan penggunaan huruf besar/kecil agar dapat menemukan semua instansi teks yang dicari. Fungsi teks umumnya menggunakan fungsi Comparer.OrdinalIgnoreCase
pada parameter comparer
untuk mengabaikan penggunaan huruf besar/kecil ketika memeriksa kesetaraan.
Contoh berikut menunjukkan cara mengabaikan kasus saat menentukan apakah kalimat berisi kata tertentu, terlepas dari kasusnya.
let
Source = Text.Contains(
"The rain in spain falls mainly on the plain.",
"Spain",
Comparer.OrdinalIgnoreCase
)
in
Source
Kode ini menghasilkan output berikut:
true
Contoh berikut menunjukkan cara mengambil posisi awal kemunculan terakhir kata "the" dalam kalimat, terlepas dari kasus.
let
Source = Text.PositionOf(
"THE RAIN IN SPAIN FALLS MAINLY ON THE PLAIN.",
"the",
Occurrence.Last,
Comparer.OrdinalIgnoreCase
)
in
Source
Kode ini menghasilkan output berikut:
34
Mengabaikan kasus dalam daftar
Fungsi daftar apa pun yang berisi parameter opsional equationCriteria
dapat menggunakan Comparer.OrdinalIgnoreCase fungsi untuk mengabaikan kasus dalam daftar.
Contoh berikut memeriksa apakah daftar berisi item tertentu, saat mengabaikan kasus. Dalam contoh ini, List.Contains hanya dapat membandingkan satu item dalam daftar, Anda tidak dapat membandingkan daftar dengan daftar. Untuk itu, Anda perlu menggunakan List.ContainsAny.
let
Source = List.Contains(
{"Squash", "Pumpkin", "ApPlE", "pear", "orange", "APPLE", "Pear", "pear"},
"apple",
Comparer.OrdinalIgnoreCase
)
in
Source
Kode ini menghasilkan output berikut:
true
Contoh berikut memeriksa apakah daftar berisi semua item yang ditentukan dalam parameter kedua (value
), saat mengabaikan kasus. Jika ada satu item yang tidak terkandung dalam daftar, seperti cucumber
dalam contoh kedua, fungsi mengembalikan FALSE.
let
Source = List.ContainsAll(
{"Squash", "Pumpkin", "ApPlE", "pear", "orange", "APPLE", "Pear", "pear"},
{"apple", "pear", "squash", "pumpkin"},
Comparer.OrdinalIgnoreCase
)
in
Source
Kode ini menghasilkan output berikut:
true
let
Source = List.ContainsAll(
{"Squash", "Pumpkin", "ApPlE", "pear", "orange", "APPLE", "Pear", "pear"},
{"apple", "pear", "squash", "pumpkin", "cucumber"},
Comparer.OrdinalIgnoreCase
)
in
Source
Kode ini menghasilkan output berikut:
false
Contoh berikut memeriksa apakah salah satu item dalam daftar adalah apel atau pir, dengan mengabaikan perbedaan besar kecil huruf.
let
Source = List.ContainsAny(
{"Squash", "Pumpkin", "ApPlE", "PEAR", "orange", "APPLE", "Pear", "peaR"},
{"apple","pear"},
Comparer.OrdinalIgnoreCase
)
in
Source
Kode ini menghasilkan output berikut:
true
Contoh berikut hanya menyimpan item unik, sambil mengabaikan kasus.
let
Source = List.Distinct(
{"Squash", "Pumpkin", "ApPlE", "PEAR", "orange", "APPLE", "Pear", "peaR"},
Comparer.OrdinalIgnoreCase
)
in
Source
Kode ini menghasilkan output berikut:
Dalam contoh sebelumnya, output menampilkan kasus item unik pertama yang ditemukan dalam daftar. Jadi, meskipun ada dua apel (ApPlE
dan APPLE
), hanya contoh pertama yang ditemukan yang ditampilkan.
Contoh berikut hanya menyimpan item unik saat mengabaikan kasus, tetapi juga mengembalikan semua hasil huruf kecil.
let
Source = List.Distinct(
{"Squash", "Pumpkin", "ApPlE", "PEAR", "orange", "APPLE", "Pear", "peaR"},
Comparer.OrdinalIgnoreCase
),
#"Lower Case" = List.Transform(Source, Text.Lower)
in
#"Lower Case"
Kode ini menghasilkan output berikut:
Mengabaikan huruf besar/kecil dalam tabel
Tabel memiliki beberapa cara untuk mengabaikan kasus. Fungsi tabel seperti Table.Contains, Table.Distinct, dan Table.PositionOf semua berisi equationCriteria
parameter. Parameter ini dapat menggunakan Comparer.OrdinalIgnoreCase fungsi untuk mengabaikan kasus dalam tabel, dengan cara yang sama seperti daftar di bagian sebelumnya. Fungsi tabel, seperti Table.MatchesAnyRows yang berisi condition
parameter dapat juga digunakan Comparer.OrdinalIgnoreCase yang dibungkus dalam fungsi tabel lain untuk mengabaikan perbedaan huruf besar dan kecil. Fungsi tabel lainnya, khusus untuk pencocokan fuzzy, dapat menggunakan IgnoreCase
opsi .
Contoh berikut menunjukkan cara memilih baris tertentu yang berisi kata "pir" dengan mengabaikan perbedaan huruf besar dan kecil. Contoh ini menggunakan condition
parameter Table.SelectRows dengan Text.Contains sebagai kondisi untuk membuat perbandingan saat mengabaikan kasus.
let
Source = #table(type table[CUSTOMER = text, FRUIT = text],
{
{"Tulga", "Squash"},
{"suSanna", "Pumpkin"},
{"LESLIE", "ApPlE"},
{"Willis", "pear"},
{"Dilbar", "orange"},
{"ClaudiA", "APPLE"},
{"afonso", "Pear"},
{"SErgio", "pear"}
}),
#"Select Rows" = Table.SelectRows(
Source, each Text.Contains([FRUIT], "pear", Comparer.OrdinalIgnoreCase))
in
#"Select Rows"
Kode ini menghasilkan output berikut:
Contoh berikut menunjukkan cara menentukan apakah salah satu baris dalam tabel berisi pear
dalam FRUIT
kolom. Contoh ini menggunakan Comparer.OrdinalIgnoreCase dalam fungsi Text.Contains dengan menggunakan parameter condition
dari fungsi Table.MatchesAnyRows.
let
Source = #table(type table [CUSTOMER = text, FRUIT = text],
{
{"Tulga", "Squash"},
{"suSanna", "Pumpkin"},
{"LESLIE", "ApPlE"},
{"Willis", "PEAR"},
{"Dilbar", "orange"},
{"ClaudiA", "APPLE"},
{"afonso", "Pear"},
{"SErgio", "peAR"}
}),
#"Select Rows" = Table.MatchesAnyRows(Source,
each Text.Contains([FRUIT], "pear", Comparer.OrdinalIgnoreCase))
in
#"Select Rows"
Kode ini menghasilkan output berikut:
true
Contoh berikut menunjukkan cara mengambil tabel dengan nilai yang dimasukkan oleh pengguna yang berisi kolom yang mencantumkan buah favorit mereka, tanpa format yang ditetapkan. Kolom ini pertama-tama dicocokkan secara fuzzy untuk mengekstrak nama buah favorit mereka, yang kemudian ditampilkan di kolom tersendiri yang bernama Cluster. Kemudian kolom Kluster diperiksa untuk menentukan buah-buahan yang berbeda dan unik yang ada di kolom. Setelah buah-buahan unik ditentukan, langkah terakhir adalah mengubah semua nama buah menjadi huruf kecil.
let
// Load a table of user's favorite fruits into Source
Source = #table(type table [Fruit = text], {{"blueberries"},
{"Blue berries are simply the best"}, {"strawberries"}, {"Strawberries = <3"},
{"Apples"}, {"'sples"}, {"4ppl3s"}, {"Bananas"}, {"fav fruit is bananas"},
{"Banas"}, {"My favorite fruit, by far, is Apples. I simply love them!"}}
),
// Create a Cluster column and fuzzy match the fruits into that column
#"Cluster fuzzy match" = Table.AddFuzzyClusterColumn(
Source, "Fruit", "Cluster",
[IgnoreCase = true, IgnoreSpace = true, Threshold = 0.5]
),
// Find the distinct fruits from the Cluster column
#"Ignore cluster case" = Table.Distinct(
Table.SelectColumns(#"Cluster fuzzy match", "Cluster"),
Comparer.OrdinalIgnoreCase
),
// Set all of the distinct fruit names to lower case
#"Set lower case" = Table.TransformColumns(#"Ignore cluster case",
{"Cluster", Text.Lower}
)
in
#"Set lower case"
Kode ini menghasilkan output berikut:
Kasus dan pengurutan
Daftar dan tabel dapat diurutkan menggunakan List.Sort atau Table.Sort masing-masing. Namun, mengurutkan teks tergantung pada kasus item terkait dalam daftar atau tabel untuk menentukan urutan pengurutan aktual (naik atau turun).
Bentuk pengurutan yang paling umum menggunakan teks yang semuanya huruf kecil, semua huruf besar, atau huruf besar yang tepat. Jika ada campuran kasus-kasus ini, urutan urutan naik adalah sebagai berikut:
- Teks apa pun dalam kolom daftar atau tabel yang dimulai dengan huruf kapital adalah pertama.
- Jika ada teks yang cocok, tetapi satu menggunakan huruf kapital pada tempatnya dan yang lain semuanya huruf kapital, versi huruf kapital ditempatkan terlebih dahulu.
- Huruf kecil kemudian diurutkan.
Untuk urutan turun, langkah-langkah yang tercantum sebelumnya diproses secara terbalik.
Misalnya, sampel berikut memiliki campuran semua huruf kecil, semua huruf besar, dan teks dengan huruf awal kapital yang akan diurutkan dalam urutan menaik.
let
Source = { "Alpha", "Beta", "Zulu", "ALPHA", "gamma", "alpha",
"beta", "Gamma", "Sierra", "zulu", "GAMMA", "ZULU" },
SortedList = List.Sort(Source, Order.Ascending)
in
SortedList
Kode ini menghasilkan output berikut:
Meskipun tidak umum, Anda mungkin memiliki campuran huruf besar dan kecil dalam teks untuk diurutkan. Urutan urutan naik dalam kasus ini adalah:
- Teks apa pun dalam kolom daftar atau tabel yang dimulai dengan huruf kapital adalah pertama.
- Jika ada teks yang cocok, teks dengan jumlah maksimum huruf besar di sebelah kiri akan diproses berikutnya.
- Huruf kecil kemudian diurutkan, dengan jumlah maksimum huruf besar ke kanan dilakukan terlebih dahulu.
Bagaimanapun, mungkin lebih nyaman untuk mengonversi teks ke kasus yang konsisten sebelum mengurutkan.
Normalisasi Power BI Desktop
Power Query M sensitif terhadap huruf besar/kecil dan membedakan antara kapitalisasi berbeda dari teks yang sama. Misalnya, "Foo", "foo", dan "FOO" diperlakukan sebagai entitas yang berbeda. Namun, ketika data dimuat ke Power BI Desktop, nilai teks dinormalisasi, yang berarti Power BI Desktop memperlakukannya sebagai nilai yang sama terlepas dari kapitalisasinya. Oleh karena itu, jika Anda perlu mengubah data sambil mempertahankan sensitivitas kasus dalam data, Anda harus menangani transformasi data di Power Query sebelum memuat data ke Power BI Desktop.
Misalnya, tabel berikut di Power Query memperlihatkan kasus yang berbeda di setiap baris tabel.
Saat tabel ini dimuat ke Power BI Desktop, nilai teks menjadi dinormalisasi, menghasilkan tabel berikut.
Instans pertama "foo" dan instans pertama "too" menentukan kasus "foo" dan "too" di seluruh baris lainnya dalam tabel Power BI Desktop. Dalam contoh ini, semua instans "foo" dinormalisasi ke nilai "Foo" dan semua instans "too" dinormalisasi ke nilai "TOO".