فصل بیستم — Split Column و Merge Columns در Power Query؛ باز کردن ستونهای شلوغ
Split Column و Merge Columns در Power Query؛ باز کردن ستونهای شلوغ
بخشی از آموزش جامع Power BI
محتوای درس Split Column و Merge Columns در Power Query؛ باز کردن ستونهای شلوغ
مقدمه؛ یک ستون شلوغ را تمیز کنیم
خیلی وقتها دادهای که تحویل میگیریم دقیقاً آن شکلی نیست که برای تحلیل لازم داریم. مثلاً نام کامل مشتری در یک ستون است، کد قطعه و نسخه با خط تیره به هم چسبیدهاند یا شهر و استان داخل یک فیلد ذخیره شدهاند.
Split Column و Merge Columns ابزارهای سادهای هستند، ولی اگر درست استفاده شوند Query را خیلی تمیزتر میکنند.
۲۰.۱. Split Column چیست؟
Split یعنی یک ستون را طبق یک قانون به چند ستون تبدیل کنیم. قانون میتواند Delimiter، تعداد کاراکتر، Position یا تغییر نوع کاراکتر باشد.
۲۰.۲. Split by Delimiter
TEHRAN-001-A
→ TEHRAN | 001 | A
اگر ساختار داده با خط تیره، ویرگول، اسلش یا جداکننده دیگری منظم است، Split by Delimiter معمولاً اولین انتخاب است.
۲۰.۳. مثال نام و نام خانوادگی
اگر FullName برابر «حمیدرضا بنی ابراهیمی» باشد، Split بر اساس Space همیشه راهحل کامل نیست؛ چون تعداد بخشهای نام افراد متفاوت است.
نکته: قبل از Split بررسی کن آیا Delimiter واقعاً معنی ثابت و قابل اعتماد دارد یا نه.
۲۰.۴. Split در Left-most و Right-most
گاهی فقط اولین یا آخرین جداکننده مهم است. مثلاً ProductCode-Version را میخواهیم از آخرین خط تیره جدا کنیم.
۲۰.۵. Split by Number of Characters
1405123456
→ 1405 | 123456
وقتی طول بخشها ثابت است، Split بر اساس تعداد کاراکتر از Delimiter مطمئنتر است.
۲۰.۶. Split by Positions
اگر کد سازمانی ساختار ثابت دارد، میتوانی در Positionهای مشخص برش بزنی؛ مثلاً دو کاراکتر اول کد شرکت، سه کاراکتر بعدی گروه و باقی شماره قطعه.
۲۰.۷. Split into Rows
گاهی یک سلول چند مقدار دارد؛ مثلاً Tags برابر A,B,C. در بعضی سناریوها بهتر است آن را به چند Row تبدیل کنیم تا هر مقدار یک ردیف مستقل داشته باشد.
Order 10 | A,B,C
→ Order 10 | A
→ Order 10 | B
→ Order 10 | C
۲۰.۸. مراقب Grain باش
Split into Rows تعداد ردیفها را زیاد میکند. اگر Amount سفارش هم روی هر ردیف تکرار شود و بعد Sum بگیری، ممکن است فروش سه برابر شود.
نکته: هر Transformation که تعداد Row را تغییر میدهد باید با Grain جدول کنترل شود.
۲۰.۹. Merge Columns چیست؟
Merge برعکس Split است؛ چند ستون را با یک Separator به یک ستون تبدیل میکنیم.
۲۰.۱۰. مثال آدرس
City = Tehran
District = 2
→ Tehran - 2
Merge برای ستونهای نمایشی، Labelها و کلیدهای ترکیبی کنترلشده مفید است.
۲۰.۱۱. Merge برای Key؛ با احتیاط
ساخت کلید ترکیبی با Merge ممکن است لازم شود، ولی Separator و Nullها را باید طوری مدیریت کنی که Collision ایجاد نشود.
A + 12 != A1 + 2
Use explicit separator:
A|12
۲۰.۱۲. Null در Merge
اگر یکی از اجزا Null باشد، باید تصمیم بگیری خروجی چه رفتاری داشته باشد. در آدرس مثلاً نبودن UnitNo نباید یک رشته عجیب با چند Separator تولید کند.
۲۰.۱۳. Text.Combine در M
Text.Combine({[City],[District],[Street]}, " - ")
در سناریوهای پیچیدهتر میتوانی قبل از Combine، Nullها را فیلتر یا Transform کنی.
۲۰.۱۴. Split و Data Type
بعد از Split معمولاً نوع ستونهای جدید باید دوباره بررسی شود. مثلاً بخش Quantity ممکن است هنوز Text باشد.
۲۰.۱۵. مثال واقعی شرکت هانا
| ورودی | عملیات | خروجی |
|---|---|---|
| THR-PRD-001 | Split '-' | THR / PRD / 001 |
| 1405/05/29 | Split '/' | Year / Month / Day |
| Tehran + Central | Merge | Tehran - Central |
۲۰.۱۶. خطای رایج؛ Split کورکورانه
اگر بعضی Rowها دو Delimiter و بعضی سه Delimiter داشته باشند، خروجی ناهمگون میشود. اول Distribution داده را بررسی کن.
۲۰.۱۷. خطای رایج؛ Merge اطلاعات خام
اگر بعداً به ستونهای اصلی نیاز داری، بدون دلیل آنها را حذف نکن. Merge میتواند ستون جدید بسازد و ستونهای اصلی برای تحلیل باقی بمانند.
۲۰.۱۸. Best Practice
ساختار داده را قبل از Split نمونهبرداری کن.
Grain را بعد از Split into Rows دوباره کنترل کن.
برای Composite Key از Separator واضح استفاده کن.
بعد از Split نوع داده را بازبینی کن.
ستون نمایشی را با ستون تحلیلی قاطی نکن.
۲۰.۱۹. تمرین
ستون ProductRef با قالب IR-ENG-2026-001 را به Country، Group، Year و Sequence تقسیم کن. بعد یک DisplayCode جدید با قالب ENG/001 بساز.
۲۰.۲۰. پروژه فصل
در داده شرکت هانا ستون CustomerAddress، ProductReference و Tags را پاکسازی کن. برای هر Transformation توضیح بده چرا Split to Columns یا Split to Rows انتخاب شده است.
جمعبندی فصل بیستم
Split و Merge فقط کار با متن نیستند؛ روی Grain، Key، Data Type و حتی صحت Measureها اثر میگذارند.
Inspect structure → Split/Merge → Validate grain → Fix types
فصل بعد سراغ Replace Values میرویم؛ جایی که باید یاد بگیریم چه زمانی جایگزینی داده پاکسازی است و چه زمانی دستکاری خطرناک معنی داده.