Semi-Joins در زبان M در Power Query
Power Query مدتهاست که از انواع مختلف عملیات Join پشتیبانی میکند:
Left Outer
Right Outer
Inner
Full Outer
Left Anti
وRight Anti
در بهروزرسانی آوریل Power BI Desktop، دو گزینهی جدید معرفی شدند: Left Semi Join و Right Semi Join. این نوع Joinها در رابط کاربری قابل انتخاب نیستند، اما میتوان آنها را در کد M با استفاده از enumeration به کار برد.
فهرست مطالب
Left Semi Join
در Left Semi Join، ردیفهایی از جدول چپ (LeftTable
) که کلید آنها در جدول راست (RightTable
) وجود دارد، نگه داشته میشوند.
این عمل مانند یک فیلتر بر روی جدول چپ عمل میکند، بدون اینکه ستونی از جدول راست به نتیجه اضافه شود.
نمونه کد Left Semi Join
Table.NestedJoin(
LeftTable,
{"Key"},
RightTable,
{"Key"},
"RightTableColumn",
JoinKind.LeftSemi
)
اگر بخواهید ستون جدول راست را Expand کنید، همه مقادیر
null
خواهند بود، چون Semi Join فقط وظیفهی فیلتر کردن دارد.
Right Semi Join
Right Semi Join مشابه عمل بالا است، با این تفاوت که روی جدول راست اعمال میشود:
فقط ردیفهای جدول راست که کلید آنها در جدول چپ وجود دارد، باقی میمانند.
هیچ ستونی از جدول چپ اضافه نمیشود.
نمونه کد Right Semi Join
Table.NestedJoin(
LeftTable,
{"Key"},
RightTable,
{"Key"},
"LeftTableColumn",
JoinKind.RightSemi
)
این کد تضمین میکند که تنها ردیفهای جدول راست باقی بمانند که مقدار کلیدشان در جدول چپ هم وجود دارد.
تفاوت با Inner Join
Inner Join ردیفهای مشترک را بازمیگرداند و ستونهای هر دو جدول را در خروجی میآورد.
Semi Join فقط برای فیلتر کردن استفاده میشود و ستونی از جدول دیگر به نتیجه اضافه نمیکند.
مزیت Semi Join
زمانی که تنها میخواهیم وجود یک ردیف در جدول دیگر را بررسی کنیم (نه دادههای اضافی آن را).
اجرای سبکتر و بهینهتر در منابع دادهای مانند SQL Server، چون فقط بررسی وجود انجام میشود.
مرور کلی انواع Join
نوع Join | عملکرد اصلی | ستونهای جدول دوم | کاربرد |
---|---|---|---|
Inner Join | ردیفهای مشترک از هر دو جدول | بله | ترکیب دادههای دو جدول |
Left Semi Join | ردیفهای جدول چپ که در جدول راست وجود دارند | خیر | فیلتر سریع جدول چپ |
Right Semi Join | ردیفهای جدول راست که در جدول چپ وجود دارند | خیر | فیلتر سریع جدول راست |
جمعبندی
Semi Joinها نوعی عملیات Join هستند که فقط وجود ردیفهای مطابق را بررسی میکنند.
Left Semi Join ردیفهای جدول چپ را نگه میدارد، Right Semi Join ردیفهای جدول راست را.
مزیت اصلی آنها در بهینهسازی عملکرد است، مخصوصاً در منابع دادهای بزرگ.
دیدگاهتان را بنویسید