Metabase

جوین کردن داده‌ها

Joining

می‌توانید داده‌ها را جوین کنید تا دادهٔ فعلی‌تان را با یک جدول دیگر یا حتی با یک سؤال ذخیره‌شده ترکیب کنید.

بعد از کلیک روی دکمهٔ "Join Data" برای اضافه‌کردن یک مرحلهٔ Join، باید داده‌ای را که می‌خواهید به آن جوین کنید انتخاب کنید (از همان پایگاه‌داده). فقط می‌توانید جدول‌ها و سؤال‌های ذخیره‌شده‌ای را انتخاب کنید که در همان پایگاه‌دادهٔ دادهٔ اولیه قرار دارند.

Picking the data to join

در مرحلهٔ بعد باید ستون‌هایی را که می‌خواهید روی آن‌ها Join انجام شود انتخاب کنید. یعنی یک ستون از جدول اول و یک ستون از جدول دوم را انتخاب می‌کنید، و Join ردیف‌هایی را که مقدار ستون اول با مقدار ستون دوم برابر است به‌هم متصل می‌کند. یک مثال رایج، Join کردن دو جدول روی ستون ID است. اگر جدولی را انتخاب کنید که بین آن و جدول اولیه رابطهٔ Foreign key تعریف شده باشد، متابیس به‌طور خودکار ستون‌های ID متناظر را برایتان انتخاب می‌کند. در انتهای مرحلهٔ Join، دکمه‌ای به نام "Columns" وجود دارد که با کلیک روی آن می‌توانید مشخص کنید کدام ستون‌ها از دادهٔ Join‌شده در خروجی نمایش داده شوند.

به‌صورت پیش‌فرض، متابیس Join از نوع Left outer انجام می‌دهد، اما می‌توانید روی آیکون نمودار ون (Venn diagram) کلیک کنید و نوع Join را عوض کنید. همهٔ پایگاه‌داده‌ها از تمام انواع Join پشتیبانی نمی‌کنند، بنابراین متابیس فقط گزینه‌هایی را که پایگاه‌دادهٔ شما پشتیبانی می‌کند نشان می‌دهد.

انواع اصلی Join عبارت‌اند از:

  • Left outer join: همهٔ ردیف‌های جدول A را به‌همراه ردیف‌های جدول B که شرط Join را برآورده می‌کنند (اگر وجود داشته باشند) برمی‌گرداند.
  • Right outer join: همهٔ ردیف‌های جدول B را به‌همراه ردیف‌های جدول A که شرط Join را برآورده می‌کنند (اگر وجود داشته باشند) برمی‌گرداند.
  • Inner join: فقط ردیف‌هایی از جدول A و B را برمی‌گرداند که شرط Join در آن‌ها برقرار است.
  • Full outer join: همهٔ ردیف‌های هر دو جدول را برمی‌گرداند، چه شرط Join برقرار باشد چه نباشد.

مثال Left outer join: اگر جدول A، Orders و جدول B، Customers باشد و Join را طوری تعریف کنید که ستون customer_id در جدول Orders برابر ستون ID در جدول Customers باشد، در یک Left outer join، خروجی فهرست کاملی از همهٔ سفارش‌ها خواهد بود، و در هر ردیف سفارش، ستون‌های مشتریِ ثبت‌کنندهٔ آن سفارش هم نمایش داده می‌شود. از آن‌جا که یک مشتری می‌تواند چندین سفارش داشته باشد، اطلاعات یک مشتری ممکن است چندبار در ردیف‌های مختلف تکرار شود. اگر برای یک سفارش مشتری متناظری وجود نداشته باشد، اطلاعات سفارش نمایش داده می‌شود اما ستون‌های مربوط به مشتری در آن ردیف خالی خواهند بود.

چند مرحله Join

در بسیاری از مواقع، ممکن است جدول‌های A، B و C داشته باشید که بین A و B ارتباط وجود دارد و بین B و C هم ارتباط هست، اما بین A و C ارتباط مستقیمی تعریف نشده است. اگر بخواهید A را به B و بعد به C جوین کنید، کافی است چند مرحلهٔ Join اضافه کنید. روی "Join Data" کلیک کنید و جدول A را به B جوین کنید؛ سپس روی مرحلهٔ "Join Data" زیر همان بلاک Join کامل‌شده کلیک کنید تا مرحلهٔ Join دوم را اضافه کنید و نتیجهٔ Join قبلی را به جدول C جوین کنید.

An A to B to C join

Join روی چند شرط

Joinها می‌توانند شامل چند شرط باشند تا نتایج دقیق‌تری به‌دست آورید. متابیس این شرط‌ها را با عملگر AND با هم ترکیب می‌کند.

Joining tables on multiple columns

Join با عملگرهای مختلف

می‌توانید جدول‌ها را بر اساس شرط‌های مقایسه‌ای زیر جوین کنید:

  • = (مساوی)
  • (نامساوی)
  • > (بزرگ‌تر از)
  • (بزرگ‌تر یا مساوی)
  • < (کوچک‌تر از)
  • (کوچک‌تر یا مساوی)

Join operators

Join با استفاده از عبارت‌های سفارشی

گاهی می‌خواهید داده‌ها را بر اساس مقادیر ثابت، تاریخ‌های نسبی یا شرط‌های سفارشی دیگر جوین کنید.

مثلاً فرض کنید جدولی از Reviewها دارید و می‌خواهید ستونی اضافه کنید که میانگین امتیاز همهٔ محصولات را نشان بدهد.

می‌توانید ابتدا میانگین امتیاز را حساب کنید و سپس نتیجه را با جدول Reviewها روی شرط 1=1 جوین کنید.

Join with custom expression

برای استفاده از یک عبارت سفارشی به‌عنوان کلید Join:

  1. روی یکی از کلیدهای Join کلیک کنید.
  2. گزینهٔ custom expression را انتخاب کنید.
  3. عبارت خود را (به‌همراه یک مقدار ثابت مثل 1) وارد کنید.
  4. روی Done کلیک کنید.

مثال دیگر: فرض کنید:

  • جدولی به نام customers دارید که نام‌ها را در ستون‌های first_name و last_name نگه می‌دارد.
  • جدولی به نام accounts دارید که نام و نام خانوادگی را در ستون واحدی به نام full_name ذخیره می‌کند.

می‌توانید این دو جدول را با یک عبارت سفارشی جوین کنید. کلید Join برای جدول customers شبیه این خواهد بود:

concat([first_name], " ", [last_name])

و کلید Join برای جدول accounts همان ستون full_name خواهد بود.

برای دیدن جزئیات بیشتر، نگاهی به فهرست عبارت‌ها بیندازید.

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