فصل بیستویکم — Replace Values در Power Query؛ استانداردسازی بدون خراب کردن معنی داده
Replace Values در Power Query؛ استانداردسازی بدون خراب کردن معنی داده
بخشی از آموزش جامع Power BI
محتوای درس Replace Values در Power Query؛ استانداردسازی بدون خراب کردن معنی داده
مقدمه؛ Replace ساده است، ولی میتواند داده را خراب کند
فرض کن در ستون وضعیت بعضی ردیفها «فعال»، بعضی «Active» و بعضی «A» نوشته شده. برای تحلیل باید این مقادیر استاندارد شوند. Replace Values اینجا عالی است.
ولی اگر هر Null یا Error را بدون فهم معنی با صفر جایگزین کنیم، گزارش شاید تمیز شود اما واقعیت کسبوکار خراب میشود.
۲۱.۱. Replace Values چیست؟
Replace Values یعنی مقدار یا بخشی از مقدار را طبق یک Rule با چیز دیگری جایگزین کنیم.
۲۱.۲. استانداردسازی Status
Active → فعال
A → فعال
Enabled → فعال
اگر چند سیستم منبع اصطلاحات متفاوت دارند، بهتر است یک Vocabulary مرجع تعریف کنیم.
۲۱.۳. Replace Value و Replace Text
در داده متنی باید فرق جایگزینی کل مقدار و جایگزینی بخشی از متن را بفهمی. تغییر «Co.» به «Company» ممکن است در وسط متن هم اتفاق بیفتد.
۲۱.۴. مثال پاکسازی مبلغ
1,250 ریال
→ remove ' ریال'
→ remove ',' if appropriate
→ convert to number
اینجا Replace بخشی از Pipeline پاکسازی قبل از تغییر Data Type است.
۲۱.۵. Replace Null
Null یعنی مقدار ثبت نشده یا موجود نیست؛ همیشه به معنی صفر نیست.
| داده | جایگزینی احتمالی |
|---|---|
| Quantity null | نیاز به بررسی |
| Discount null | ممکن است 0 باشد اگر تعریف سیستم همین است |
| CustomerName null | نباید با 0 جایگزین شود |
۲۱.۶. Replace Error
Error را فقط وقتی Replace کن که علت و معنی جایگزین مشخص باشد. در غیر این صورت Error یک Signal مهم Data Quality است.
۲۱.۷. Replace با Mapping Table
اگر دهها مقدار نیاز به استانداردسازی دارند، زنجیره طولانی Replaceها نگهداری سختی دارد. یک Mapping Table میتواند طراحی بهتری باشد.
۲۱.۸. مثال Mapping
| RawStatus | StandardStatus |
|---|---|
| A | Active |
| ACTIVE | Active |
| Enabled | Active |
| I | Inactive |
| Disabled | Inactive |
۲۱.۹. چرا Mapping بهتر است؟
قواعد تبدیل از Query جدا و قابل مشاهده میشوند، Business Owner راحتتر آنها را Review میکند و اضافه شدن مقدار جدید سادهتر است.
۲۱.۱۰. Case Sensitivity
Active، ACTIVE و active ممکن است در منبع سه شکل متفاوت باشند. قبل از Replace میتوانی سیاست استانداردسازی Case داشته باشی.
۲۱.۱۱. Trim قبل از Replace
Text.Trim([Status])
گاهی مشکل واقعی «Active » با Space آخر است. اگر اول Trim کنی، تعداد Ruleهای Replace کمتر میشود.
۲۱.۱۲. Clean و کاراکترهای نامرئی
داده کپیشده از سیستمهای مختلف ممکن است کاراکترهای نامرئی داشته باشد. Clean میتواند قبل از Standardization کمک کند.
۲۱.۱۳. Replace در ستون انتخابی
Rule را فقط روی ستونهایی اعمال کن که باید تغییر کنند. Replace عمومی روی چند ستون ممکن است دادهای را تغییر دهد که اصلاً قصدش را نداشتی.
۲۱.۱۴. ترتیب عملیات
Trim/Clean
→ Normalize case
→ Replace/Map
→ Convert type
→ Validate
ترتیب درست باعث میشود Ruleها سادهتر و قابل پیشبینیتر باشند.
۲۱.۱۵. مثال شرکت هانا؛ نام شعب
| خام | استاندارد |
|---|---|
| تهران | تهران |
| تهران | تهران |
| THR | تهران |
| Tehran | تهران |
این Rule فقط وقتی معتبر است که سازمان تأیید کند همه این مقادیر واقعاً یک شعبه را نشان میدهند.
۲۱.۱۶. جایگزینی مقادیر Sentinel
بعضی سیستمهای قدیمی برای مقدار ناموجود از -1، 9999 یا 1900-01-01 استفاده میکنند. اینها باید با دانش منبع شناسایی شوند.
نکته: هر عدد عجیب را خودسرانه Null نکن؛ ممکن است واقعاً مقدار معتبر باشد.
۲۱.۱۷. تاریخ 1900-01-01
اگر سیستم منبع این تاریخ را به معنی «تاریخ ثبت نشده» استفاده میکند، میتوان با تأیید مالک داده آن را Null کرد. ولی این یک قانون کسبوکاری است، نه قانون عمومی Power BI.
۲۱.۱۸. Replace و Auditability
Transformation مهم باید قابل توضیح باشد. اگر مدیر پرسید چرا ۳۲۰ رکورد تغییر کردهاند، باید Rule و منبع تصمیم مشخص باشد.
۲۱.۱۹. Data Quality Log
Rule: THR → تهران
Owner: Sales Master Data
Reason: legacy branch code
Approved: Yes
برای پروژههای جدی، قواعد پاکسازی مهم را مستند کن.
۲۱.۲۰. Replace یا Merge با Dimension؟
اگر مسئله تبدیل Code به Description است، گاهی Join با Dimension درستتر از Replace است.
BranchCode THR
→ Merge DimBranch
→ BranchName تهران
۲۱.۲۱. خطای رایج؛ Replace برای اصلاح همهچیز
Power Query جای اصلاح سیستم منبع را نمیگیرد. اگر هر روز داده غلط جدید میآید، فقط Patch کردن Query راهحل بلندمدت نیست.
۲۱.۲۲. خطای رایج؛ Null → 0
این یکی از خطرناکترین عادتهاست. Null و Zero از نظر تحلیل معنی متفاوت دارند.
۲۱.۲۳. خطای رایج؛ Replace متن جزئی
اگر «IR» را در همه متنها با «Iran» جایگزین کنی، ممکن است بخشی از کلمات دیگر هم ناخواسته تغییر کند. Scope Rule را دقیق تعریف کن.
۲۱.۲۴. تست قبل و بعد
| کنترل | قبل/بعد |
|---|---|
| Distinct values | آیا استاندارد شده؟ |
| Row count | نباید بیدلیل تغییر کند |
| Null/Error | تغییر قابل توضیح است؟ |
| Sample records | با منبع تطبیق دارد؟ |
۲۱.۲۵. Best Practice
اول Trim/Clean کن.
برای Ruleهای زیاد Mapping Table بساز.
Null را با Zero یکی ندان.
قواعد Business را مستند کن.
بعد از Replace تعداد Distinct Valueها را کنترل کن.
اگر مشکل از Master Data است، موضوع را به Source Owner برگردان.
۲۱.۲۶. تمرین پایه
ستون Status شامل Active، ACTIVE، A، Inactive، I و Spaceهای اضافه است. آن را به دو مقدار Active/Inactive استاندارد کن و Stepها را توضیح بده.
۲۱.۲۷. تمرین متوسط
یک Mapping Table برای کدهای شعب بساز و به جای پنج Replace جداگانه، داده فروش را با Mapping استاندارد کن.
۲۱.۲۸. تمرین چالشی
در ستون Discount مقدارهای Null، -1، 0 و درصدهای واقعی وجود دارد. بدون فرض اضافی مشخص کن چه سؤالهایی باید از مالک داده بپرسی تا Transformation درست طراحی شود.
۲۱.۲۹. پروژه فصل؛ Data Standardization شرکت هانا
| حوزه | کار |
|---|---|
| Status | Normalize |
| Branch | Mapping |
| Amount Text | Remove formatting |
| Sentinel values | Business review |
| Errors | Root-cause review |
| Validation | Before/after profile |
جمعبندی فصل بیستویکم
Replace Values زمانی حرفهای است که معنی داده را بهتر و استانداردتر کند، نه اینکه فقط Errorها را پنهان کند.
Understand → Normalize → Replace/Map → Validate → Document
فصل بعدی وارد Pivot و Unpivot میشود؛ یکی از مهمترین Transformationها برای تبدیل فایلهای اکسل انسانی به ساختار تحلیلی مناسب Power BI.