فرض یکپارچگی ارجاعی برای جوینها (Assuming Referential Integrity for Joins)
قابل اجرا برای: Tableau Desktop
در برخی موارد، میتوانید با انتخاب گزینه Assume Referential Integrity (فرض یکپارچگی ارجاعی) از منوی Data، عملکرد پرسوجو را برای جوینها (join) بهبود بخشید.
هنگامی که از این گزینه استفاده میکنید، Tableau تنها زمانی جدول جوین شده را در پرسوجو لحاظ میکند که به طور خاص توسط فیلدهای موجود در نما (view) به آن ارجاع داده شده باشد.
استفاده از این تنظیم زمانی مناسب است که میدانید دادههای شما دارای یکپارچگی ارجاعی هستند (به تعریف زیر مراجعه کنید) اما پایگاه داده شما این یکپارچگی را اعمال نمیکند یا نمیتواند اعمال کند.
اگر این امکان را دارید که یکپارچگی ارجاعی را در پایگاه داده خود پیکربندی کنید، این گزینه بهتر از استفاده از این تنظیم در Tableau است، زیرا میتواند عملکرد را هم در پایگاه داده و هم در Tableau بهبود بخشد.
گزینه Assume Referential Integrity در Tableau تنها میتواند بر عملکرد در سمت Tableau تأثیر بگذارد.
اگر دادههای شما فاقد Referential Integrity باشند و این تنظیم را فعال کنید، نتایج پرسوجو ممکن است قابل اعتماد نباشند.
برای درک اینکه Referential Integrity چیست، تصور کنید که به دادههای فروش که دارای دو جدول است متصل میشوید: Sales و Product Catalog. این دو جدول در زیر نشان داده شدهاند:
Sales
Product ID (Foreign Key) | Sale Amount | Transaction Date |
1 | 100 | 10/1/2012 |
1 | 2000 | 10/2/2012 |
2 | 50 | 9/30/2012 |
3 | 10 | 8/21/2012 |
کاتالوگ محصولات Product Catalog
Product ID (Primary Key) | Product Name |
1 | 10 Inch Tablet |
2 | Smart Phone |
3 | Desk Lamp |
4 | Memory Stick |
Assuming Referential Integrity for Join
از آنجا که تمام محصولاتی که فروخته میشوند باید در کاتالوگ محصولات فهرست شوند، هر ردیف در جدول فروش، یک ردیف منطبق در جدول کاتالوگ محصولات دارد. وقتی این دو جدول بر اساس شناسه محصول به هم متصل شوند، در نهایت جدولی مانند این خواهید داشت:
Product ID | Product Name | Product ID | Sale Amount | Transaction Date |
1 | 10 Inch Tablet | 1 | 100 | 10/1/2012 |
1 | 10 Inch Tablet | 1 | 2000 | 10/2/2012 |
2 | Smart Phone | 2 | 50 | 9/30/2012 |
3 | Desk Lamp | 3 | 10 | 8/21/2012 |
حالا فرض کنید شما یک نما (view) برای مشاهدهی مبلغ فروش بر اساس منطقه (Region) ایجاد کردهاید. به طور پیشفرض، کشیدن فیلد مبلغ فروش به نما ممکن است یک پرسوجو (query) مانند این ایجاد کند:
SELECT SUM([Sales Amount]) FROM [Sales] S INNER JOIN [Product Catalog] P ON S.ProductID = P.ProductID
با انتخاب Assume Referential Integrity، به Tableau میگویید که جداول متصل شده دارای یکپارچگی ارجاعی هستند. به عبارت دیگر، شما تأیید میکنید که جدول فروش همیشه یک ردیف منطبق در جدول کاتالوگ محصول خواهد داشت. از آنجا که این موضوع درست است، Tableau برای بازگرداندن این نتایج به هیچ اطلاعاتی از جدول کاتالوگ محصول نیاز ندارد. وقتی فیلد Sales Amount را به داخل نما میکشانید، Tableau میتواند پرسوجو را به صورت زیر ساده کند:
SELECT SUM([Sales Amount]) FROM [Sales]
این کوئری سادهشده اغلب میتواند نتایج سریعتری را برگرداند زیرا عملیات اتصال (join) را حذف میکند. این گزینه فقط اتصالات داخلی را تحت تأثیر قرار میدهد و بر منابع دادهای که یک جدول واحد دارند، تأثیری ندارد.
برای خرید لایسنس نرم افزار Tableau ، میتوانید از خدمات ما استفاده نموده و درخواست خود را از طریق فرم زیر ثبت نمایید.
بدون دیدگاه