فصل 21 از 50 درس 1 از 1

فصل بیست‌ویکم — 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

RawStatusStandardStatus
AActive
ACTIVEActive
EnabledActive
IInactive
DisabledInactive

۲۱.۹. چرا 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 شرکت هانا

حوزهکار
StatusNormalize
BranchMapping
Amount TextRemove formatting
Sentinel valuesBusiness review
ErrorsRoot-cause review
ValidationBefore/after profile

جمع‌بندی فصل بیست‌ویکم

Replace Values زمانی حرفه‌ای است که معنی داده را بهتر و استانداردتر کند، نه اینکه فقط Errorها را پنهان کند.

Understand → Normalize → Replace/Map → Validate → Document

فصل بعدی وارد Pivot و Unpivot می‌شود؛ یکی از مهم‌ترین Transformationها برای تبدیل فایل‌های اکسل انسانی به ساختار تحلیلی مناسب Power BI.