Metabase

Isnull

تابع isNull بررسی می‌کند که آیا یک مقدار برابر null است یا نه؛ null در دیتابیس‌ها یک مقدار «جای‌خالی» ویژه است که زمانی استفاده می‌شود که دادهٔ واقعی موجود یا مشخص نیست.

نحو (Syntax)

isNull(text column)

می‌توانید از isNull در فیلترهای سفارشی، یا به‌عنوان شرط در تجمیع‌های شرطی CountIf و SumIf استفاده کنید.
برای ساخت ستون سفارشی با isNull باید آن را با تابع دیگری که مقدار بولی (true/false) می‌پذیرد ترکیب کنید، مانند case.

رفتار متابیس با null

در جدول‌های متابیس، مقادیر null به‌صورت سلول‌های خالی نمایش داده می‌شوند. علاوه بر این، در ستون‌های متنی، رشته‌های خالی و رشته‌هایی که فقط از کاراکتر فاصله (Whitespace) تشکیل شده‌اند نیز خالی دیده می‌شوند.

جدول زیر خروجی تابع isNull را روی حالت‌های مختلف نشان می‌دهد:

نمایش در متابیسمقدار در دیتابیسisNull(value)
nulltrue
"" (رشتهٔ خالی)false*
" " (فاصلهٔ خالی)false
kitten"kitten"false

* در دیتابیس‌های Oracle و Vertica، رشته‌های خالی به‌جای مقدار مجزا، عملاً به‌صورت null تفسیر می‌شوند.

ساخت ستون بولی سفارشی

برای ساخت ستون سفارشی با isNull باید آن را با یک تابع دیگر ترکیب کنید.
مثلاً اگر بخواهید ستونی بسازید که وقتی ستون Discount مقدار null دارد، مقدار true، و در غیر این صورت مقدار false داشته باشد، می‌توانید از عبارت case استفاده کنید:

case(isNull([Discount]), true, false)

جایگزینی مقادیر null با مقدار دیگر

می‌توانید isNull را با عبارت case ترکیب کنید تا اطلاعاتِ غایب را با متن توصیفی‌تری جایگزین کنید.

مثلاً اگر بخواهید ستونی بسازید که وقتی ستون اصلی [Feedback] مقدار null دارد، "Unknown feedback" را نمایش دهد و در غیر این صورت همان مقدار فیدبک را نشان دهد، می‌توانید از این عبارت استفاده کنید:

case(isNull([Feedback]), "Unknown feedback.", [Feedback])
Feedbackcase(isNull([Feedback]), "Unknown feedback.", [Feedback])
null"Unknown feedback."
""""
"I like your style.""I like your style."

انواع دادهٔ قابل قبول

نوع دادهسازگار با isNull
String
Number
Timestamp
Boolean
JSON

محدودیت‌ها

  • در متابیس، برای استفادهٔ عملی از isNull باید آن را با عبارتی ترکیب کنید که آرگومان بولی (true/false) می‌پذیرد (مثل case).
  • isNull در هر بار فراخوانی فقط یک مقدار را بررسی می‌کند. اگر می‌خواهید سلول‌های خالی را در چند ستون مدیریت کنید، بهتر است از عبارت coalesce کمک بگیرید.
  • اگر به‌نظر می‌رسد isNull روی سلول‌های خالی شما اثری ندارد، احتمالاً با رشته‌های خالی طرف هستید. در این صورت از عبارت isEmpty استفاده کنید.

توابع مرتبط

در این بخش توابع و فرمول‌هایی را می‌بینید که می‌توانند به‌جای عبارت isNull متابیس استفاده شوند، همراه با نکاتی برای انتخاب گزینهٔ مناسب.

مثال‌های زیر همه از جدول نمونهٔ جایگزینی مقدارهای null استفاده می‌کنند:

Feedbackcase(isNull([Feedback]), "Unknown feedback.", [Feedback])
null"Unknown feedback."
""""
"I like your style.""I like your style."

SQL

در اغلب موارد (به‌جز NoSQLها)، سؤال‌هایی که با Query builder ساخته می‌کنید به SQL ترجمه شده و روی دیتابیس اجرا می‌شوند.

CASE WHEN Feedback IS NULL THEN 'Unknown feedback'
     ELSE Feedback END

از نظر منطقی معادل عبارت زیر در متابیس است:

case(isNull([Feedback]), "Unknown feedback.", [Feedback])

Spreadsheets

در Spreadsheetها، مقدار #N/A تقریباً نقش null در دیتابیس را بازی می‌کند (نشان‌دهندهٔ دادهٔ «نامشخص» یا «مفقود»).

اگر ستون نمونهٔ Feedback در ستون A باشد، فرمول زیر:

=IF(ISNA(A2), "Unknown feedback.", A2)

معادل این عبارت در متابیس است:

case(isNull([Feedback]), "Unknown feedback.", [Feedback])

Python

در کتابخانه‌های NumPy و pandas معمولاً به‌جای null از NaN یا NA استفاده می‌شود.

اگر ستون نمونهٔ Feedback را در یک ستون DataFrame به نام df["Feedback"] داشته باشید:

df["Custom Column"] = np.where(df["Feedback"].isnull(), "Unknown feedback.", df["Feedback"])

این کد معادل عبارت زیر در متابیس است:

case(isNull([Feedback]), "Unknown feedback.", [Feedback])

مطالعهٔ بیشتر