Metabase

Substring

تابع substring بخشی از یک متن را استخراج می‌کند.
این تابع برای تمیزکردن متن (یا هر مقداری با نوع دادهٔ رشته‌ای) که فرمت ثابتی دارد، بسیار کاربردی است.

برای مثال، substring برای رشته‌هایی مثل شمارهٔ SKU، کدهای ISO، و آدرس‌های ایمیل استاندارد انتخاب مناسبی است.

SyntaxExample
substring(text, position, length)substring("user_id@email.com", 1, 7)
بخشی از متن را با توجه به نقطهٔ شروع (position) و طول (length بر حسب تعداد کاراکتر) برمی‌گرداند."user_id"

پارامترها

  • اولین کاراکتر در رشته، در موقعیت 1 قرار دارد.
  • طول length همیشه باید عددی مثبت باشد.

گرفتن زیررشته از سمت چپ

Mission IDAgent
19951113006006
20061114007007
19640917008008

ستون Agent یک ستون سفارشی است با این عبارت:

substring([Mission ID], 9, 3)

گرفتن زیررشته از سمت راست

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

1 + length([column]) - position_from_right

در این‌جا، position_from_right تعداد کاراکترهایی است که می‌خواهید از سمت راست به چپ بشمارید.

با همان جدول نمونه:

Mission IDAgent
19951113006006
20061114007007
19640917008008

در این مثال، ستون Agent با این عبارت ساخته شده است:

substring([Mission ID], (1 + length([Mission ID]) - 3), 3)

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

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

محدودیت‌ها

تابع substring متن را فقط با شمردن یک تعداد ثابت کاراکتر استخراج می‌کند.
اگر لازم است بر اساس الگوهای پیچیده‌تری متن را جدا کنید، از regexExtract استفاده کنید.

اگر فقط می‌خواهید فاصله‌های اضافهٔ اطراف متن را حذف کنید، می‌توانید از عبارت‌های trim، lTrim یا rTrim استفاده کنید.

توابع مرتبط

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

عبارت‌های متابیس

ابزارهای دیگر

RegexExtract

اگر لازم است متن را بر اساس قواعد پیچیده‌تر یا الگوهای خاص (مثل «آخرین وقوع ۰۰» و …) استخراج کنید، از regexExtract کمک بگیرید.
مثلاً می‌توانید شناسهٔ Agent را با الگویی که آخرین وقوع "00" و هرچه بعدش هست را می‌گیرد، بیرون بکشید:

regexExtract([Mission ID], ".+(00.+)$")

که باید همان نتیجهٔ عبارت زیر را برگرداند:

substring([Mission ID], 9, 3)

SQL

وقتی سؤالی را با notebook editor اجرا می‌کنید، متابیس تنظیمات گرافیکی شما را به کوئری تبدیل کرده و روی دیتابیس اجرا می‌کند.

اگر دادهٔ نمونه را در PostgreSQL ذخیره کرده باشید:

SELECT
    mission_id,
    SUBSTRING(mission_id, 9, 3) AS agent
FROM
    this_message_will_self_destruct;

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

substring([Mission ID], 9, 3)

Spreadsheets

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

=MID(A2, 9, 3)

همان نتیجه‌ای را می‌دهد که:

substring([Mission ID], 9, 3)

Python

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

df['Agent'] = df['Mission ID'].str.slice(8, 11)

این کد همان کار زیر را انجام می‌دهد:

substring([Mission ID], 9, 3)

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