تابع ALLNOBLANKROW در Power BI
تابع ALLNOBLANKROW در Power BI برای حذف فیلترها و بازگرداندن تمام ردیفهای یک جدول یا مقادیر یک ستون است، با این تفاوت که ردیفهای خالی (Blank Row) ناشی از روابط نامعتبر را حذف میکند.
تعریف تابع ALLNOBLANKROW
ALLNOBLANKROW(<tableName or columnName>)
- اگر نام یک جدول را وارد کنید، تمام ردیفها بهجز ردیف خالی بازگردانده میشوند.
- اگر نام یک ستون را وارد کنید، تمام مقادیر منحصربهفرد آن ستون بهجز مقدار خالی بازگردانده میشوند.
عملکرد چگونه است؟
در مدل دادهای Power BI، زمانی که رابطهای بین دو جدول وجود دارد اما برخی ردیفها در جدول فرزند (child) با هیچ ردیفی در جدول والد (parent) مطابقت ندارند، Power BI یک ردیف خالی (Blank Row) برای حفظ یکپارچگی مدل ایجاد میکند. تابع ALLNOBLANKROW این ردیف را حذف میکند تا فقط دادههای معتبر نمایش داده شوند.
مثال ساده
فرض کنید جدول Products با ستون Category دارید و میخواهید تمام دستهبندیها را بدون مقدار خالی بازگردانید:
ALLNOBLANKROW(Products[Category])
این فرمول تمام مقادیر منحصربهفرد ستون Category را بازمیگرداند، بهجز مقدار خالی که ممکن است به دلیل رابطه ناقص ایجاد شده باشد.
مثال کاربردی
در دادههای نمونه، جدول ResellerSales_USD شامل یک ردیف است که هیچ مقداری ندارد و بنابراین نمیتواند به هیچ یک از جداول والد در روابط درون ورکبوک مرتبط باشد. شما از این جدول در یک PivotTable استفاده خواهید کرد تا بتوانید رفتار ردیف خالی و نحوه مدیریت شمارش روی دادههای نامرتبط را مشاهده کنید.
مرحله 1: دادههای نامرتبط را تأیید کنید
پنجره Power Pivot را باز کنید، سپس جدول ResellerSales_USD را انتخاب کنید. در ستون ProductKey، مقادیر خالی را فیلتر کنید. یک ردیف باقی خواهد ماند. در آن ردیف، تمام مقادیر ستون باید به جز SalesOrderLineNumber خالی باشند.
مرحله 2: ایجاد یک PivotTable
یک PivotTable جدید ایجاد کنید، سپس ستون datetime[Calendar Year] را به پنجره Row Labels بکشید. جدول زیر نتایج مورد انتظار را نشان میدهد:
| برچسبهای ردیف |
|---|
| 2005 |
| 2006 |
| 2007 |
| 2008 |
| Grand Total |
ALLNOBLANKROW
به برچسب خالی بین ۲۰۰۸ و جمع کل توجه کنید. این برچسب خالی نشاندهنده عضو ناشناس است که یک گروه ویژه است که برای محاسبه هر مقداری در جدول فرزند که هیچ مقدار منطبقی در جدول والد ندارد، ایجاد شده است. در این مثال، ستون datetime.[Calendar Year] است.
وقتی این برچسب خالی را در PivotTable میبینید، میدانید که در برخی از جداول مرتبط با ستون datetime[Calendar Year]، یا مقادیر خالی یا مقادیر غیر منطبق وجود دارد. جدول والد، جدولی است که برچسب خالی را نشان میدهد، اما ردیفهایی که مطابقت ندارند در یک یا چند جدول فرزند قرار دارند.
ردیفهایی که به این گروه برچسب خالی اضافه میشوند یا مقادیری هستند که با هیچ مقداری در جدول والد مطابقت ندارند – به عنوان مثال، تاریخی که در جدول datetime وجود ندارد – یا مقادیر تهی هستند، به این معنی که اصلاً مقداری برای تاریخ وجود ندارد. در این مثال، ما یک مقدار خالی در تمام ستونهای جدول فروش فرزند قرار دادهایم. داشتن مقادیر بیشتر در جدول والد نسبت به جداول فرزند مشکلی ایجاد نمیکند.
مرحله 3: شمارش ردیفها با استفاده از ALL و ALLNOBLANK
دو معیار زیر را به جدول datetime اضافه کنید تا ردیفهای جدول را بشمارید: Countrows ALLNOBLANK از datetime، Countrows ALL از datetime. فرمولهایی که میتوانید برای تعریف این معیارها استفاده کنید عبارتند از:
// Countrows ALLNOBLANK of datetime
= COUNTROWS(ALLNOBLANKROW('DateTime'))
// Countrows ALL of datetime
= COUNTROWS(ALL('DateTime'))
// Countrows ALLNOBLANKROW of ResellerSales_USD
= COUNTROWS(ALLNOBLANKROW('ResellerSales_USD'))
// Countrows ALL of ResellerSales_USD
= COUNTROWS(ALL('ResellerSales_USD'))
در یک PivotTable خالی، ستون datetime[Calendar Year] را به برچسبهای ردیف اضافه کنید و سپس معیارهای تازه ایجاد شده را اضافه کنید. نتایج باید مانند جدول زیر باشد:
| برچسبهای ردیف | شمارشگرها ALLNOBLANK از datetime | شمارش همه تاریخ و زمان |
|---|---|---|
| 2005 | 1280 | 1281 |
| 2006 | 1280 | 1281 |
| 2007 | 1280 | 1281 |
| 2008 | 1280 | 1281 |
| 1280 | 1281 | |
| Grand Total | 1280 | 1281 |
نتایج، اختلاف ۱ سطری را در تعداد سطرهای جدول نشان میدهد. با این حال، اگر پنجره Power Pivot را باز کنید و جدول datetime را انتخاب کنید، نمیتوانید هیچ سطر خالی در جدول پیدا کنید زیرا سطر خالی ویژه ذکر شده در اینجا، عضو ناشناس است.
مرحله 4: تأیید کنید که شمارش دقیق است
برای اثبات اینکه ALLNOBLANKROW هیچ سطر واقعاً خالی را نمیشمارد و فقط سطر خالی ویژه جدول والد را مدیریت میکند، دو معیار زیر را به جدول ResellerSales_USD اضافه کنید: Countrows ALLNOBLANKROW از ResellerSales_USD، Countrows ALL از ResellerSales_USD.
یک PivotTable جدید ایجاد کنید و ستون datetime[سال تقویمی] را به پنل Row Labels بکشید. اکنون معیارهایی را که ایجاد کردهاید اضافه کنید. نتایج باید مانند زیر باشد:
| Row Labels | Countrows ALLNOBLANKROW of ResellerSales_USD | Countrows ALL of ResellerSales_USD |
|---|---|---|
| 2005 | 60856 | 60856 |
| 2006 | 60856 | 60856 |
| 2007 | 60856 | 60856 |
| 2008 | 60856 | 60856 |
| 60856 | 60856 | |
| Grand Total | 60856 | 60856 |
اکنون این دو معیار نتایج یکسانی دارند. دلیل این امر آن است که تابع ALLNOBLANKROW ردیفهای واقعاً خالی را در یک جدول نمیشمارد، بلکه فقط ردیف خالی را مدیریت میکند که یک مورد خاص است که در جدول والد ایجاد میشود، زمانی که یک یا چند جدول فرزند در رابطه حاوی مقادیر غیر منطبق یا مقادیر خالی باشند.
تفاوت با تابع ALL
| تابع | عملکرد |
|---|---|
ALL |
حذف فیلترها و بازگرداندن همه مقادیر، شامل ردیف خالی |
ALLNOBLANKROW |
حذف فیلترها و بازگرداندن همه مقادیر، بهجز ردیف خالی ناشی از رابطه نامعتبر |
کاربردهای رایج
- حذف ردیفهای خالی در مدلهای دارای روابط ناقص
- ساخت معیارهای دقیقتر در گزارشهایی که به مقادیر معتبر نیاز دارند
- جلوگیری از نمایش دادههای ناقص یا نامعتبر در تحلیلها
نکات مهم
- این تابع فقط ردیف خالی ناشی از روابط را حذف میکند، نه مقادیر خالی واقعی در دادهها.
- در مدلهایی که روابط بهدرستی تعریف نشدهاند، استفاده از این تابع میتواند نتایج دقیقتری ارائه دهد.
- معمولاً در ترکیب
ملاحظات
- تابع ALLNOBLANKROW فقط ردیف خالی را فیلتر میکند که جدول والد، در یک رابطه، زمانی نشان میدهد که یک یا چند ردیف در جدول فرزند وجود داشته باشد که مقادیر آنها با ستون والد مطابقت نداشته باشد. برای توضیح کامل به مثال زیر مراجعه کنید.
جدول زیر خلاصهای از انواع ALL که در DAX ارائه میشوند و تفاوتهای آنها را نشان میدهد:
| تابع و کاربرد | توضیحات |
|---|---|
ALL(Column) |
تمام فیلترها را از ستون مشخص شده در جدول حذف میکند؛ تمام فیلترهای دیگر در جدول، روی ستونهای دیگر، همچنان اعمال میشوند. |
ALL(Table) |
تمام فیلترها را از جدول مشخص شده حذف میکند. |
ALLEXCEPT(Table,Col1,Col2...) |
تمام فیلترهای زمینه در جدول را به جز ستونهای مشخص شده، لغو میکند. |
ALLNOBLANK(table|column) |
- برای توضیحات کلی در مورد نحوه عملکرد تابع ALL، همراه با مثالهای گام به گام که از ALL(Table) و ALL(Column) استفاده میکنند، به تابع ALL مراجعه کنید.
- این تابع برای استفاده در حالت DirectQuery، هنگام استفاده در ستونهای محاسبهشده یا قوانین امنیتی سطح ردیف (RLS) پشتیبانی نمیشود.
برای خرید لایسنس نرم افزار Power BI ، میتوانید از خدمات ما استفاده نموده و درخواست خود را از طریق فرم زیر ثبت نمایید.
میتوانید پاور بی آی دسکتاپ رایگان را دانلود کنید : Power BI desktop download
