تفکیک یک فیلد به چند فیلد مجزا (Split) در تبلو دسکتاپ
«Split a Field» در Tableau یعنی تقسیم یک فیلد متنی به چند فیلد جداگانه بر اساس یک جداکننده (Delimiter) یا الگوی تکرارشونده. این قابلیت زمانی استفاده میشود که یک ستون شامل چند بخش اطلاعاتی باشد—مثل «نام و نام خانوادگی»، «کد محصول»، «آدرس»، یا «City, State, Zip».
اگر در دادههای خود فیلدهایی از نوع متنی (String) دارید که حاوی چند بخش اطلاعاتی مجزا و متفاوت هستند (به عنوان مثال، نام و نام خانوادگی یک مشتری که در یک سلول با هم آمدهاند)، میتوانید مقادیر آن فیلد را به فیلدهای جداگانهای تفکیک کنید.

شما میتوانید از گزینههای تفکیک (Split) در تبلو دسکتاپ (Tableau Desktop) استفاده کنید تا مقادیر را بر اساس یک جداکننده (Delimiter) یا یک الگوی تکراری از مقادیر که در هر سطر وجود دارد، از هم جدا کنید. در مثال «نام مشتری»، جداکننده مشترک همان فاصله (” “) بین نام و نام خانوادگی است.
پیدا کردن گزینه Split
نرمافزار تبلو دسکتاپ — اما نه محیط ویرایش تحت وب در مرورگر — دارای یک گزینه در منو برای تفکیک خودکار (Automatic) یا سفارشی (Custom) است. این گزینهها بر پایه تابع متنی SPLIT کار میکنند؛ تابعی که میتوانید از آن به صورت دستی در فرمولنویسیها (Calculations) نیز استفاده کنید تا کنترل کاملی روی نحوه تفکیک دادهها داشته باشید.
همه منابع داده (Data Sources) از تابع SPLIT پشتیبانی نمیکنند. شما میتوانید با بررسی وجود گزینههای Split و Custom Split در منو، متوجه شوید که آیا منبع داده شما از این تابع پشتیبانی میکند یا خیر:
-
در صفحه Data Source (منبع داده)، منوی کلیکراست ستون مورد نظر را برای پیدا کردن گزینههای Split و Custom Split بررسی کنید.

- از قسمت Data در یک برگه، منوی Transform > Split و Custom Split را بررسی کنید.

Split در وب
authoring وب از Split از طریق منو پشتیبانی نمیکند. برای تقسیم دادهها هنگام کار در مرورگر، میتوانید به صورت دستی یک محاسبه SPLIT ایجاد کنید. در ادامه توضیح داده میشود.
تفکیک فیلدها (Split Fields)
یک فیلد متنی (String) میتواند به صورت خودکار و بر اساس یک جداکننده مشترک که تبلو آن را در فیلد تشخیص میدهد، تفکیک شود. علاوه بر این، شما میتوانید نحوه تفکیک را به صورت دستی نیز تعریف کنید.
بسته به نوع اتصال به منبع داده (Connection Type)، یک عملیات تفکیک میتواند مقادیر یک فیلد را به صورت خودکار تا حداکثر به ده فیلد جدید تقسیم کند.
تفکیک خودکار یک فیلد (Split a field automatically)
-
در صفحه Data Source: در جدول دادهها (Grid)، روی فلش کوچکِ منوی کشویی در کنار نام فیلد کلیک کرده و گزینهی Split را انتخاب کنید.
-
در پنل دادهها (Data pane): روی فیلدی که میخواهید تفکیک شود کلیک راست کرده و مسیر Transform > Split را دنبال کنید.
نتایج حاصل از این تفکیک، فیلدهای محاسباتی (Calculated Fields) استاندارد خواهند بود که درست مانند هر فیلد محاسباتی دیگری قابل ویرایش یا حذف هستند. نوع داده (Data Type) فیلدهای جدیدی که توسط تفکیک خودکار ایجاد میشوند، بسته به الگویی که تبلو در دادهها تشخیص میدهد، میتواند متفاوت باشد.
تفکیک فیلد با روش سفارشی (Custom Split)
برای کنترل بیشتر روی فرآیند تفکیک، از گزینه Custom Split استفاده کنید. در این روش میتوانید جداکننده (Separator) را خودتان مشخص کنید و تعیین کنید که تفکیک مقادیر بر اساس چه معیاری انجام شود: بر اساس اولین $N$ بار تکرار جداکننده، آخرین $N$ بار تکرار، یا بر اساس تمامی دفعات تکرار آن.
-
در صفحه Data Source: در جدول دادهها، روی فلش منوی کشویی کنار نام فیلد کلیک کرده و Custom Split را انتخاب کنید.
-
در پنل دادهها (Data pane): روی فیلد مورد نظر کلیک راست کرده و مسیر Transform > Custom Split را انتخاب کنید.
فیلدهای جدیدی که از طریق تفکیک سفارشی (Custom Split) ایجاد میشوند، همیشه دارای نوع داده متنی (String) خواهند بود.
نکته: در برخی شرایط، اگر فرآیند تفکیک خودکار برای ایجاد فیلدهای جدید بیش از حد طول بکشد یا تبلو نتواند جداکننده مشترکی پیدا کند، پنجره پاپآپِ مربوط به Custom Split به شما نمایش داده میشود.
روش تفکیک سفارشی زمانی بسیار کاربردی است که تعداد جداکنندهها از یک مقدار به مقدار دیگر (در سطرهای مختلف) متفاوت باشد؛ چرا که در این حالت امکان استفاده از تفکیک خودکار (Automatic Split) وجود ندارد.
به عنوان مثال، فرض کنید فیلدی به نام Employee Info (اطلاعات کارمند) دارای مقادیر زیر است:
jsmith| accounting | north
dnguyen | humanresources
lscott | recruiting| west
karnold |recruiting |west
در این حالت، تفکیک سفارشی (Custom Split) را میتوان به گونهای تنظیم کرد که بر اساس کاراکتر خط عمودی یا همان پایپ (|) عمل کند و تمام ستونها را از هم تفکیک نماید. برای آن سطر و مقداری که فاقد اطلاعات مربوط به منطقه (Region) است (سطر دوم)، فیلدِ حاصل از ستون سوم برای آن سطر به صورت پوچ (Null) نمایش داده خواهد شد.

این هم ترجمه بخش مربوط به روشهای جایگزین برای تفکیک فیلدها و فرمولنویسی دستی در تبلو:
روشهای جایگزین برای تفکیک فیلدها (خارج از منو)
۱. تفکیک دستی با استفاده از تابع SPLIT
عملکرد تابع SPLIT بسیار شبیه به گزینه تفکیک سفارشی (Custom Split) است، با این تفاوت که در هر بار فرمولنویسی، تنها یک فیلد خروجی به عنوان نتیجه بازگردانده میشود. در این تابع، شما ابتدا کاراکتر جداکننده را تعریف میکنید و سپس با وارد کردن یک شماره بخش (Token Number)، مشخص میکنید که کدام بخش از متنِ تفکیکشده استخراج شود.
به عنوان مثال، برای تفکیک فیلد Customer Name (نام مشتری) به دو فیلد مجزای نام و نام خانوادگی، باید دو فیلد محاسباتی (Calculated Field) جداگانه به شکل زیر بسازید:
-
نام (First Name):
PlaintextSPLIT([Customer Name], " ", 1)
* **نام خانوادگی (Last Name):**
```text
SPLIT([Customer Name], " ", 2)
برای مثالِ مربوط به اطلاعات کارمند (Employee Info) مانند مقادیر "jsmith| accounting | north"، باید سه فیلد محاسباتی جداگانه بسازید:
-
نام کاربری (Username):
PlaintextSPLIT([Employee Info], "|", 1)
* **دپارتمان (Department):**
```text
SPLIT([Employee Info], "|", 2)
-
منطقه (Region):
SPLIT([Employee Info], “|”, 3)
#### ۲. تفکیک دستی با استفاده از توابع LEFT و RIGHT
اگر هدف شما بیشتر استخراج (Extract) بخش مشخصی از یک متن است تا تفکیک آن بر اساس یک کاراکتر جداکننده، میتوانید از توابع `LEFT` و `RIGHT` استفاده کنید. این توابع تنها بخش مشخصی از متن را بر اساس تعداد کاراکترهایی که شما تعیین میکنید، جدا کرده و برمیگردانند.
به عنوان مثال، فرض کنید مقدار یکی از سطرها `IGW8892` باشد:
| Calculation | Result |
RIGHT([Value], 4) |
8892 |
LEFT([Value], 4) |
IGW8 |
LEFT(RIGHT([Value], 2) , 1) |
9 |
استفاده از عبارات باقاعده (Regular Expressions) برای فیلدهایی با جداکنندههای ترکیبی و متفاوت
اگر نوع کاراکترهای جداکننده در یک فیلد با هم تفاوت داشته باشند، امکان تفکیک خودکار (Automatic Split) آنها وجود نخواهد داشت. به عنوان مثال، فرض کنید یک فیلد حاوی مقادیر زیر باشد:
smith.accounting
dnguyen-humanresources
lscott_recruiting
karnold_recruiting
همانطور که میبینید، در این سطرها از جداکنندههای مختلفی مثل نقطه (.)، خط تیره (-) و خط زیرین (_) استفاده شده است. در چنین شرایطی، بهترین راهکار این است که از عبارات باقاعده (Regular Expressions) یا همان توابع REGEXP در تبلو برای استخراج اطلاعات دلخواه خود استفاده کنید.
نکات مهم هنگام کار با قابلیتهای Split و Custom Split
مواردی که باید در زمان استفاده از تفکیک خودکار و سفارشی به خاطر داشته باشید:
-
عدم امکان استفاده در Join: فیلدهای جدید حاصل از تفکیک را نمیتوان به عنوان کلید (Key) برای پیوند دادن (Join) جدولها استفاده کرد؛ اما میتوان از آنها برای تلفیق منابع داده (Data Blending) بهره برد.
-
عدم امکان استفاده در Pivot: فیلدهای جدید ایجاد شده را نمیتوان دوباره پایوت (Pivot) کرد.
-
محدودیت ابزارها: گزینههای تفکیک خودکار و سفارشی برای مجموعهها (Sets)، گروهها (Groups)، پارامترها (Parameters) و دستهبندیها (Bins) پشتیبانی نمیشوند.
-
محدودیت در دیتابیس SQL Server: مایکروسافت اسکیوال سرور (Microsoft SQL Server) تنها اجازه ایجاد حداکثر ۴ فیلد تفکیکشده را میدهد.
-
تولید بیش از ۱۰ فیلد جدید: برای تولید بیش از ۱۰ فیلد جدید، میتوانید فرآیند تفکیک را به صورت متوالی (چندباره) انجام دهید. به این صورت که میتوانید فرآیند Split را دوباره روی یکی از فیلدهای حاصل از تفکیک اول (که هنوز حاوی چندین بخش اطلاعاتی مجزا است) اعمال کنید.
عیبیابی خطاهای رایج در Split و Custom Split
مشکلات شناختهشدهای که ممکن است هنگام استفاده از این قابلیتها با آنها مواجه شوید:
-
ناپدید شدن گزینههای Split و Custom Split در منابع داده پشتیبانیشده: گزینههای تفکیک خودکار و سفارشی تنها برای فیلدهایی فعال هستند که نوع داده آنها متنی (String) باشد.
-
مقادیر پوچ (Null Values): پس از ایجاد یک تفکیک خودکار یا سفارشی، ممکن است فیلدهای جدید حاوی مقادیر Null یا کاملاً خالی باشند. این اتفاق زمانی رخ میدهد که در سطر مورد نظر، دادهای برای قرار گرفتن در فیلد جدیدِ پیشبینیشده وجود نداشته باشد.
-
حذف شدن بخشی از دادهها: گاهی اوقات ممکن است تبلو بخشی از مقادیر موجود در فیلد را به عنوان کاراکتر جداکننده (Separator) در نظر بگیرد. اگر قسمتی از ارزش واقعی دادهها به عنوان جداکننده تلقی شود، آن بخش از مقادیر دیگر در فیلدهای جدید ظاهر نخواهد شد.
به عنوان مثال:
| Original value | Split field values |
| Zip-98102 | 98102 |
| Zip-98109 | 98109 |
| Zip-98119 | 98199 |
| Zip-98195 | 98195 |
این تقسیم، فیلد جداگانهای برای “Zip-” ایجاد نمیکند، زیرا کل آن رشته به عنوان جداکننده استفاده میشود.

بدون دیدگاه