نحوه جداسازی کاراکترها با چند delimiter در power query
داده های وجود دارند که از کاراکترهای special متفاوت (کاراکترهایی که نه عدد هستند و نه متن) برای جداسازی متن و عدد در آن ها استفاده شده. برای تمیز کردن و جداسازی متن و عدد براساس این نوع از کاراکتر ها لازمه که چندین بار از split در power query استفاده کنید ولی میتونید یک بار لیستی از کارکترهای جداکننده مورد نظرتون رو بدید و خروجی رو درچند ستون دریافت کنید.
نسخه مورد استفاده در این مثال : Power BI October 2020
مثالی که قرار بزنم روی تاریخ شمسی خواهد بود که روز ماه سال به دو کاراکتر متفاوت وارد شده اند. خروجی نهایی به این صورت میشه (اگه حوصله خوندن ندارید مستقیم برید به پایین صفحه تا ویدئو رو مشاهده کنید) :
فرض کنید داده ای دارید به شکل زیر (سورس ها این تصویر Data Enter می باشند که میتونه برای شما ورودی sql یا اکسل یا غیره باشه) :
در قدم اول نیازه یه کپی از ستون ایجاد کنید چرا؟ چون می خواهیم تغییرات رو ستون اصلی ایجاد نشه تا تستش کنیم برای این کار راست کلیک روی ستون و Duplicate Column رو انتخاب کنید.
حالا وارد Advanced Editor بشید و پس از آخرین خط قبل از in یه کاما بذارید و کد زیر رو اضافه کنید و پس از in هم نام آخرین step رو جایگزین کنید که اینجا #”Split by Delimiters” می باشد.
1 |
#"Split by Delimiters" = Table.SplitColumn(#"Duplicated Column", "dates - Copy", Splitter.SplitTextByAnyDelimiter({".","/","-"}), {"Year", "Month","Day"}) |
توضیحات بیشتر در مورد کد :
کد پایانی به این صورت خواهد بود :
1 2 3 4 5 6 7 8 |
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjS2NNU3MNE3sFSK1QFzzfQMjPRMYTwjPSM9EzDH0lTPRM8YwgSqMdEzgHJMdQ1MdQ2BnFgA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [dates = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"dates", type text}}), #"Duplicated Column" = Table.DuplicateColumn(#"Changed Type", "dates", "dates - Copy"), #"Split by Delimiters" = Table.SplitColumn(#"Duplicated Column", "dates - Copy", Splitter.SplitTextByAnyDelimiter({".","/","-"}), {"Year", "Month","Day"}) in #"Split by Delimiters" |
البته یه سری تغییرات هم به منظور زیباسازی و استاندارد سازی انجام شده که در یک custom column فرمول زیر را خواهیم نوشت :
1 |
(if Text.Length([Year])=4 then [Year] else "13"&[Year]) &"/"&Text.PadStart([Month],2,"0")&"/"&Text.PadStart([Day],2,"0") |
کد پایانی :
1 2 3 4 5 6 7 8 9 |
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjS2NNU3MNE3sFSK1QFzzfQMjPRMYTwjPSM9EzDH0lTPRM8YwgSqMdEzgHJMdQ1MdQ2BnFgA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [dates = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"dates", type text}}), #"Duplicated Column" = Table.DuplicateColumn(#"Changed Type", "dates", "dates - Copy"), #"Split by Delimiters" = Table.SplitColumn(#"Duplicated Column", "dates - Copy", Splitter.SplitTextByAnyDelimiter({".","/","-"}), {"Year", "Month","Day"}), #"Added Custom" = Table.AddColumn(#"Split by Delimiters", "result", each (if Text.Length([Year])=4 then [Year] else "13"&[Year]) &"/"&Text.PadStart([Month],2,"0")&"/"&Text.PadStart([Day],2,"0")), #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Year", "Month", "Day"}) in #"Removed Columns" |
مطالب جدید
دستهها
- Books (۱۲)
- Excel (۲)
- اکسل به زبان مثال …! (۹)
- ترفند های پایتونی (۶)
- هوش تجاری (۴۸)
- Power BI (۳۶)
- DAX (۱۳)
- Power Query (۹)
- SQL (۸)
- SSIS (۲)
- Power BI (۳۶)
- یادگیری ماشین (۸)
- ML Algorithm (۲)
- kNN (۲)
- pandas (۵)
- ML Algorithm (۲)
بایگانی
آمار بازدید
- ۰
- ۴۹
- ۲۱
- ۴۳,۶۱۸
- ۲۷ اردیبهشت, ۱۴۰۳