خوشبختانه، منابع زیادی به صورت آنلاین وجود دارد که به شما کمک میکند تا داشبورد خود را بهینه کنید، مانند بهینهسازی محاسبات، استخراج عصارهها و محدود کردن دادهها و کاربرگها به آنچه لازم است بدون اینکه بر بینشی که ارائه میدهید تأثیر بگذارد.
توسعه دهندگان و کاربران Tableau به طور یکسان میخواهند داشبوردها در یک چشم به هم زدن بارگذاری شوند.
با این حال، مواقعی وجود دارد که این راهحلهای بهینهسازی هنوز نتیجه مورد نیاز شما را به همراه نمیآورد. دادههای اصلی شما حاوی میلیونها یا حتی میلیاردها نقطه داده است که با استفاده از پرس و جوهای پیچیده SQL در نماهای پایگاه داده یا SQL سفارشی مستقیم در Tableau گرد هم آمدهاند.
استخراجها ممکن است به دلیل حجم زیاد و پیچیدگی دادهها نامناسب باشند، تولید آن عصاره به صورت محلی بسیار زمانبر است، و برای اعمال برنامهریزی بهروزرسانی روزانه در Tableau Server، منابع زیادی نیاز است.
با میلیاردها datapoint، این احتمال وجود دارد که دادههای شما به وضوح بخشبندی شده باشد. به عنوان مثال، بر اساس کشور، محصول یا چیزی شبیه به آن. وقتی داده ها را در یکی از این فیلدها فیلتر میکنید، تعداد نقاط داده به طور چشمگیری کاهش مییابد.
با این حال، نمیتوانید بر اساس این فیلدها extracts ایجاد کنید زیرا کاربران میخواهند بتوانند کشورها یا محصولات مختلف را انتخاب کنند. فقط استفاده از آنها به عنوان فیلترهای سریع کار نخواهد کرد، زیرا هر تغییر فیلتر، حتی برای جداولی که به درستی ایندکس شده اند، چند دقیقه طول میکشد.
اما اگر به شما بگویم که میتوانید این منبع داده عظیم را با استفاده از این فیلدهای بخش از قبل فیلتر کنید، چه پاسخی خواهید داد؟ میتوانید مقادیر پارامترها را به پرسوجوهای SQL سفارشی در آن بند ارسال کنید، یا از آنها از طریق فیلترهای منبع داده استفاده کنید.
اگر پارامترهای شما ثابت هستند و میخواهید آنها را فقط به یک انتخاب محدود کنید، میتوانید از قبل پر کنید، یا میتوانید از یک منبع داده جداگانه با مقادیر متمایز (ترکیبی) برای این فیلترهای بخش استفاده کنید و قبل از شما یک Landing Page در اطراف آن ایجاد کنید. منبع داده اصلی و عظیم خود را بارگیری کنید.
چند سوال وجود دارد که باید در مورد دادهها و فیلترهای اولیه بپرسید:
- آیا یک یا چند فیلد pre-filter دارید؟
- اگر بیش از یک دارید، آیا میخواهید مطمئن شوید که فقط میتوانید مقادیر مرتبط را برای فیلترهای پیشفرض خود انتخاب کنید (مثلاً وقتی کشوری را انتخاب میکنید، فقط مناطق مربوطه همچنان در فیلتر دیگری قابل مشاهده هستند)؟
- آیا انتظار دارید مقادیر در dimensionsهای pre-filter تغییر کنند یا لیستهای static هستند؟
- آیا می خواهید چندین مقدار را در هر pre-filter ارسال کنید یا فقط یک مقدار؟
- آیا شامل فیلتر کردن در dimension تاریخ میشود؟
پیچیدگی راه حل به این پاسخها بستگی دارد اما افزایش عملکرد میتواند قابل توجه باشد.
دو عنصر وجود دارد، منطق پارامتر و منطق فیلتر. بیایید ابتدا به پارامترها بپردازیم.
Static List Parameters
ساده ترین راه حل، پارامترهایی با فهرست ایستا از مقادیر است که تنها از یک مقدار در هر بعد پیش فیلتر برای فیلتر کردن منبع داده اصلی شما استفاده میکند. اگر مقادیر pre-filter تغییر نکنند و شما فقط یک pre-filter دارید یا اگر بیش از یک فیلتر دارید، نیازی نیست که فیلتر(های) اضافی فقط مقادیر فیلتر مربوطه را نشان دهد، این کار عالی عمل میکند.
در مثال ما میخواهیم یک View یا Query SQL سفارشی در [Country] ، [Segment] و [Date] را از Pre-Filter کنیم. [Country] و [Segment] مستقل از یکدیگر هستند، مقادیر هر دو Dimensions ثابت هستند و میخواهیم کاربر یک یا همه مقادیر را در هر فیلتر انتخاب کند.
با تنظیم چهار پارامتر شروع کنید: [Country Parameter] ، [Segment Parameter] ، [Start Date] و [End Date] . [Country Parameter] و [Segment Parameter] را با اضافه کردن مقادیر Data Source اصلی (در حال حاضر فیلتر نشده) با استفاده از list option پر کنید.
ما همچنین دو گزینه اضافی “(All)” و “(None)” را به هر دو این پارامتر اضافه میکنیم.
پارامترهای [Start Date] و [End Date] به طور بالقوه میتوانند به Minimum و Maximum [Date] در Data Source اصلی ما محدود شوند، اما فقط بر اساس تاریخهای ثابت کدگذاری شده سخت، زیرا در غیر این صورت، ما هنوز باید به نحوی دادههای اصلی را بارگیری کنیم. منبع برای کشف دامنه فیلد [Date] .
در نهایت، تمام این پارامترها را به یک داشبورد خالی اضافه میکنیم (با استفاده از منوی Analysis). در این داشبورد، میتوانیم مقادیر پارامتر را تنظیم کنیم و یک Navigation Button (در اینجا به عنوان دکمه Apply نشان داده شده است) اضافه کنیم که کاربر را به داشبورد اصلی میبرد. ما هنوز باید مقادیر پارامتر را در Data Source اعمال کنیم، که در ادامه دو روش ممکن را برای آن توضیح خواهیم داد.
Dynamic Parameters
راه حل پیچیده تر شامل یک Data Source جداگانه است که حاوی مقادیر مجاز برای هر پارامتر و به طور بالقوه رابطه بین پارامترها است.
به عنوان مثال، اگر کاربر بتواند یک یا چند کشور و سپس مناطق یا شهرها را انتخاب کند، میخواهید گزینههایی که انتخاب میکنید به یکدیگر وابسته باشند.
اگر رابطه بین فیلترها مهم نیست، میتوانید یک Data Source برای هر لیستی از مقادیر فیلتر نیز داشته باشید. این ممکن است حتی کارایی بیشتری داشته باشد زیرا به جای هر ترکیبی از مقادیر، فقط لیستهای مجزای از مقادیر دارید.
هر دو سناریو به شما امکان میدهند بسیار پویاتر از List Option استاتیک باشید، زیرا مقادیر زیربنایی نیز میتوانند به طور خودکار به روز شوند و شما را قادر میسازد انتخابهای چند مقدار ایجاد کنید.
بیایید یک Data Source جداگانه ایجاد کنیم که حاوی زیربخشی از منبع داده اصلی ما باشد – یک لیست مجزا از [Market] و [Country] . بسته به backend، پرس و جو مشابه این خواهد بود:
Select distinct “Market”, “Country” from “SuperStore”
ما میخواهیم این دو Dimensions بهعنوان فیلترهای معمولی روی داشبورد نشان داده شوند، همراه با یک دکمه Apply، که مقادیر انتخابشده را بهعنوان یک فهرست پیوسته به یک پارامتر ارسال میکند، و یک دکمه Reset، که فیلترها را به حالت خالی بازنشانی میکند یا همه را انتخاب میکند. مقادیر به صورت پیش فرض فیلتر کردن تاریخ همچنان با استفاده از پارامترهای استاندارد تاریخ انجام خواهد شد.
فیلترها باید از یک worksheet ساخته شده از این data source جدید سرچشمه بگیرند. بنابراین، بیایید با ساخت دو worksheet شروع کنیم – یکی به عنوان دکمه Apply و دیگری به عنوان دکمه Reset عمل میکند. ما میخواهیم که دکمه Reset به جای انتخاب همه مقادیر، فیلترها را خالی کند تا مطمئن شویم منبع داده اصلی هرگز با همه مقادیر انتخاب شده بارگذاری نمیشود.
این تنها در صورتی کار میکند که دو فیلتر عملیاتی داشته باشیم که از دکمه Reset نشات میگیرند که یک “Empty Field” را برای هر دو [Market] و [Country] در کاربرگ دکمه اعمال اعمال میکنند. این فیلترهای عمل را به کاربرگ دکمه اعمال اضافه میکند، که به نوبه خود ما را قادر میسازد تا نشان دهیم که چه مواردی در هر فیلتر اقدام در داشبورد انتخاب شدهاند و به کاربر اجازه میدهد موارد را اضافه یا حذف کند.
بنابراین ما با دکمه Reset شروع می کنیم تا فیلترهای Action را ایجاد کنیم. یک کاربرگ خالی باز میکنیم و با استفاده از Data Source جدید، فیلدی به نام [Empty] ایجاد میکنیم که فقط شامل دو علامت نقل قول (Single or Double) است. این فیلد را روی جزئیات رها میکنیم، یک برچسب موقتی «Reset» را به قفسه ردیف اضافه میکنیم و نوع علامت را به Polygon تغییر میدهیم. ما میتوانیم رنگ پس زمینه کل کاربرگ را به خاکستری تغییر دهیم و برچسب “Reset” را کمی بزرگتر کنیم. به خاطر داشته باشید که ما به برچسب “Reset” در قفسه سطر (یا ستون) نیاز داریم، زیرا یک علامت Polygon نمی تواند برچسب مخصوص به خود را داشته باشد.
اکنون این Worksheet را کپی میکنیم و برچسب را از “Reset” به “Apply” تغییر میدهیم و فیلدهای [Market] و [Country] را نیز به جزئیات اضافه میکنیم. دلیل رفتن به Polygon این است که هیچ علامت قابل مشاهدهای وجود ندارد که در ترکیبات [Market] و [Country] انتخاب شده ضرب شود. میتوانید از نوع علامت دیگری استفاده کنید، اما زمانی که چندین مقدار انتخاب میشوند، باید راهی پیدا کنید تا همه آنها را در یک علامت واحد به هم بچسبانید تا از داشتن دکمههای «Apply» زیاد جلوگیری کنید. لطفاً توجه داشته باشید، ما [Market] و [Country] را به قفسه فیلتر اضافه نمیکنیم ، زیرا میخواهیم این کار را با ایجاد و راهاندازی فیلترهای عمل از دکمه Reset به دکمه Apply انجام دهیم.
سپس، برگههای دکمه Apply و Reset را به یک داشبورد خالی جدید اضافه میکنیم، اجازه دهید آن را Landing Page بنامیم و فیلترها را ایجاد میکنیم.
برای هر فیلد جداگانه ( [Market] و [Country] در مورد ما، دو عمل فیلتر از برگه دکمه Reset به صفحه دکمه اعمال اعمال کنید )، با داشتن فیلد [Empty] به عنوان منبع و [Country] / [Market] به عنوان فیلد هدف . ، پس از پاک کردن انتخاب، عمل را روی Select و “Keep filtered values” اجرا کنید:
به محض زدن دکمه Reset، فیلترهای عمل در worksheet دکمه Apply ایجاد میشوند و هر دو خالی خواهند بود، بنابراین دکمه Apply فعلا ناپدید میشود. هر دو کارت فیلتر Action را به داشبورد اضافه کنید و کارت فیلتر [Country] را تغییر دهید تا فقط در صورت تمایل مقادیر مربوطه را نسبت به [Market] نشان دهد. اکنون که فیلترها بر روی دکمه Apply عمل میکنند، تنها چیزی که باقی میماند ارسال مقادیر انتخاب شده به پارامترها است:
بیایید دو پارامتر دیگر به نامهای [CountrySQL] و [MarketSQL] را به عنوان پارامترهای free-text string ایجاد کنیم. فقط برای اهداف آزمایشی، ما آن پارامترها را در داشبورد Landing Page خود قابل مشاهده خواهیم کرد. لازم نیست آنها را قابل مشاهده کنیم، اما به اعتبار سنجی اولیه کمک می کند.
ما دو عمل پارامتر جدید را از دکمه Apply اضافه میکنیم که مقادیر [Country] و [Market] را با یک تجمع Concatenate به پارامترهای [CountrySQL] و [MarketSQL] اضافه میکند .
اطمینان حاصل کنید که گزینه “Clearing the selection will” روی “Keep the current value” تنظیم شده است. این بار دو عمل پارامتر دیگر را از دکمه Reset اضافه کنید، وقتی روی دکمه Reset کلیک شد ، فیلد [Empty] را به پارامترهای [CountrySQL] و [MarketSQL] اعمال کنید:
در نهایت، پارامترهای [Start Date] و [End Date] را نیز به داشبورد اضافه کنید.
مطمئن شوید که یک یا دو Market و کشور را در فیلترها انتخاب کردهاید و روی دکمه Apply کلیک کنید. مقادیر باید به عنوان یک لیست جدا شده با کاما به پارامترها منتقل شوند:
Commas or Other Funny Characters
هنگام استفاده از concatenate aggregation برای عملکرد پارامتر، جداکننده همیشه یک کاما خواهد بود. اگر موارد فیلتر از قبل دارای کاما هستند، سادهترین کار این است که با استفاده از یک فیلد محاسبه شده، کاماهای موجود در مقادیر را با کاراکتر دیگری جایگزین کنید. با این حال، در برخی موارد ممکن است با چندین کاراکتر مواجه شوید که ممکن است به عنوان جداکننده تفسیر شوند یا باعث ایجاد مشکلات دیگری در دادههای اصلی شوند. در آن صورت، می توانید بعد را که میخواهید به پارامتر اضافه کنید (الحاق) در گیومه بپیچید.
در مثال ما، بیایید فرض کنیم که نام کشوری با کاما داریم (به عنوان مثال “Netherlands, the”). فقط کافی است یک محاسبه ساده به نام [CountryQuoted] اضافه کنید که با استفاده از این فرمول، تمام مقادیر را در دو گیومه قرار میدهد:
‘”’+[Country]+’”’
جایی که در حال حاضر [Country] را در جزئیات و اقدامات پارامتری دارید ، با این قسمت [CountryQuoted] جایگزین کنید.
Applying the Parameters to the Data Source
دو روش برای اعمال پارامترها در منبع داده وجود دارد.
- فیلترهای Data Source را به منبع داده اصلی خود اضافه کنید.
- پارامترها را به عبارت Where’s پرس و جوی SQL سفارشی اضافه کنید
در حالی که گزینه 1 بسیار ساده تر است، به خصوص اگر شما یک پارامتر چند مقداری با لیستی از مقادیر به هم پیوسته داشته باشید، گزینه 2 می تواند عملکرد بسیار بیشتری داشته باشد. ممکن است همیشه اینطور نباشد، بنابراین توصیه میکنم خودتان آن را آزمایش کنید.
برای گزینه 1، میتوانید فیلتر شرطی را در [Country] ، [Market] و [Date] با استفاده از منطقی مانند اضافه کنید.
([CountrySQL] = ‘(All)’ ANDtrue) OR (CONTAINS([CountrySQL],[Country]))
AND
[Date] >= [Start Date] AND [Date] < [End Date]
یا میتوانیم آن را در سه فیلد Boolean مجزا قرار دهیم و آن فیلدهای تنظیم شده را به فیلترهای منبع داده اضافه کنیم، که اساساً همین کار را انجام میدهد:
گزینه 2 کمی بیشتر درگیر است. اول از همه، اگر مستقیماً به یک جدول یا نما وصل شویم، ابتدا باید آن را به Custom SQL تبدیل کنیم. اگر فقط پارامترهای یک مقدار داشته باشیم، میتوانیم عبارت زیر را به انتهای جستار SQL سفارشی اضافه کنیم (در اینجا گویش Snowflake است، اما این باید در سایر گویشهای SQL یکسان یا مشابه باشد).
با این حال، اگر پارامترهای چند انتخابی داشته باشیم، کمی بیشتر درگیر می شود.
در Snowflake، میتوانیم از ترکیب توابع TABLE و SPLIT_TO_TABLE برای تقسیم یک رشته پیوسته به مقادیر جداگانه آن به عنوان ردیف استفاده کنیم. در Microsoft SQL Server (2016+)، تابع معادل STRING_SPLIT است.
در Snowflake، تابع SPLIT_TO_TABLE رشته به هم پیوسته را به قالب جدول تغییر میدهد، و تابع TABLE تضمین میکند که میتوانیم آن فهرست را مانند هر جدول یا نمای دیگری جستجو کنیم:
در Snowflake، تابع SPLIT_TO_TABLE رشته به هم پیوسته را به قالب جدول تغییر میدهد، و تابع TABLE تضمین میکند که میتوانیم آن فهرست را مانند هر جدول یا نمای دیگری جستجو کنیم:
در Microsoft SQL Server، تابع SPLIT_SPLIT هر دو را یکجا انجام میدهد:
به خاطر داشته باشید که اگر مقادیر فردی را در پارامترهای پیوسته خود در گیومه قرار دهید، باید مواردی مانند این را حذف کنید:
مراحل پایانی
از آنجایی که دکمه Apply مقادیر (جدا شده با کاما) را مستقیماً به پارامترهای ارجاع شده در Query SQL سفارشی فشار می دهد، فیلتر بلافاصله انجام می شود. تنها چیزی که ممکن است بخواهیم اضافه کنیم، یا یک عمل ناوبری در همان دکمه Apply به اولین داشبورد است که از منبع داده اصلی، اکنون از قبل فیلتر شده یا یک دکمه ناوبری جداگانه در زیر دکمه Apply استفاده می کند. به سراغ گزینه اول میرویم.
همچنین باید نام فیلترها را تغییر دهیم تا بیت Action را حذف کنیم و خود پارامترها را که فقط در صفحه فرود گذاشته ایم حذف کنیم تا بررسی کنیم که آیا عملکرد دکمه Apply واقعاً کار می کند یا خیر.
