اتصال به یک پرسوجوی SQL سفارشی (Connect to a Custom SQL Query)
برای اکثر پایگاههای داده، میتوانید به جای کل مجموعه دادهها، به یک پرسوجوی خاص متصل شوید. از آنجا که پایگاههای داده دارای سینتکس SQL کمی متفاوت از یکدیگر هستند، SQL سفارشی که برای اتصال به یک پایگاه داده استفاده میکنید ممکن است با SQL سفارشی که ممکن است برای اتصال به پایگاه داده دیگر استفاده کنید، متفاوت باشد. با این حال، استفاده از SQL سفارشی زمانی میتواند مفید باشد که دقیقاً اطلاعات مورد نیاز خود را میدانید و نحوه نوشتن پرسوجوهای SQL را میدانید.
اگرچه دلایل رایج متعددی وجود دارد که چرا ممکن است از SQL سفارشی استفاده کنید، میتوانید از SQL سفارشی برای ادغام دادههای خود در جداول، تغییر فیلدها برای انجام اتصال بین پایگاههای داده، بازسازی یا کاهش اندازه دادههای خود برای تجزیه و تحلیل و غیره استفاده کنید.
Custom SQL Query
در برخی موارد، میتوانید با اتصال به یک پرسوجوی SQL سفارشی، دادهها را به Tableau بیاورید. این روش را زمانی استفاده کنید که نیاز دارید:
- دادههای خود را به صورت عمودی ترکیب کنید (Union): اگر پایگاه داده شما از گزینه Union پشتیبانی نمیکند، میتوانید از SQL سفارشی برای ترکیب جداول به صورت عمودی استفاده کنید.
- نوع داده فیلدها را تغییر دهید (Recast): این کار برای انجام جوینهای بین پایگاه دادهای مفید است، به خصوص زمانی که انواع داده فیلدهای کلید در جداول مختلف، ناسازگار هستند.
- اندازه دادهها را برای تحلیل کاهش دهید: با انتخاب زیرمجموعهای از ستونها و ردیفها، میتوانید تنها دادههای مورد نیاز خود را به Tableau وارد کنید.
- ساختار دادههای خود را تغییر دهید (Pivot): اگر پایگاه داده شما از قابلیت Pivot پشتیبانی نمیکند، میتوانید از SQL سفارشی برای تغییر ساختار دادهها از حالت ستونی به ردیفی استفاده کنید.
نکته: برای منابع داده اکسل و فایل متنی، این گزینه فقط در ورکبوکهایی که قبل از Tableau Desktop 8.2 ایجاد شدهاند یا هنگام استفاده از Tableau Desktop در ویندوز با اتصال قدیمی (legacy connection) در دسترس است.
نکته: از Tableau 2020.2 به بعد، اتصالات قدیمی اکسل و متن دیگر پشتیبانی نمیشوند.
اتصال به یک پرسوجوی SQL سفارشی
- پس از اتصال به دادههای خود، روی گزینه New Custom SQL در صفحه Data Source دو بار کلیک کنید.
- پرسوجو را در جعبه متن تایپ یا جایگذاری کنید. پرسوجو باید یک عبارت SELECT باشد.
- پس از اتمام، روی OK کلیک کنید.
هنگامی که روی OK کلیک میکنید، پرسوجو اجرا شده و جدول پرسوجوی SQL سفارشی در لایه منطقی (logical layer) Canvas ظاهر میشود. فقط فیلدهای مرتبط از پرسوجوی SQL سفارشی در شبکهبندی دادهها (data grid) در صفحه Data Source نمایش داده میشوند.
مثالهایی از پرسوجوهای SQL سفارشی
ترکیب عمودی جداول شما (Union)
اگر نیاز دارید دادهها را به هم اضافه کنید، میتوانید از گزینه Union در لایه فیزیکی (physical layer) Canvas در Tableau استفاده کنید.
در برخی موارد، پایگاه داده شما از این گزینه پشتیبانی نمیکند، بنابراین میتوانید از SQL سفارشی استفاده کنید.
به عنوان مثال، فرض کنید دو جدول زیر را دارید: نوامبر و دسامبر.
شما میتوانید از کوئری SQL سفارشی زیر برای الحاق جدول دوم، دسامبر، به جدول اول، نوامبر، استفاده کنید:
SELECT * FROM November UNION ALL SELECT * FROM December
نتیجه کوئری در دیتا گرید به شکل زیر خواهد بود:
تغییر نوع داده یک فیلد برای انجام اتصال بین پایگاه داده
وقتی میخواهید اتصال بین دو جدول در لایه فیزیکی بوم را انجام دهید، نوع داده فیلدهایی که به آنها متصل میشوید باید یکسان باشد. در مواردی که نوع داده فیلدها یکسان نیست، میتوانید قبل از انجام اتصال، از SQL سفارشی برای تغییر نوع داده (cast) فیلد استفاده کنید.
به عنوان مثال، فرض کنید میخواهید دو جدول Main و Sub را به ترتیب با استفاده از فیلدهای Root و ID به هم متصل کنید. فیلد Root از نوع عدد و فیلد ID از نوع رشته است. میتوانید از کوئری SQL سفارشی زیر برای تغییر نوع داده Root از عدد به رشته استفاده کنید تا بتوانید جداول Main و Sub را با استفاده از فیلدهای Root و ID به هم متصل کنید.
SELECT [Main].[Root] AS [Root_Number]
CAST([Main].[Root] AS INT] AS [Root_String]
FROM [Main]
نتیجه این پرسوجو، فیلد Root اصلی و فیلد Root تبدیل شده به رشته را نشان میدهد.
کاهش اندازه دادههای خود
هنگام کار با مجموعههای داده بسیار بزرگ، گاهی اوقات میتوانید با کاهش اندازه آن، در زمان کار با دادههای خود صرفهجویی کنید.
به عنوان مثال، فرض کنید یک جدول بزرگ به نام FischerIris دارید. میتوانید از پرسوجوی SQL سفارشی زیر برای بازیابی ستونها و رکوردهای مشخص شده استفاده کنید و در نتیجه اندازه مجموعه دادهای که به Tableau متصل میشوید را کاهش دهید.
SELECT [FischerIris].[Species] AS [Species],
[FischerIris].[Width] AS [Petal Width],
COUNT([FischerIris].[ID]) AS [Num of Species]
FROM [FischerIris]
WHERE [FischerIris].[Organ] = 'Petal' AND [FischerIris].[Width] > 15.0000
GROUP BY [FischerIris].[Species], [FischerIris].[Width]
تغییر ساختار دادههای خود (Pivot)
در برخی موارد، ممکن است با جدولی کار کنید که نیاز به تغییر ساختار قبل از تحلیل دارد. اگرچه این نوع کار را میتوان در لایه فیزیکی Canvas در Tableau با استفاده از گزینههایی مانند Pivot انجام داد، اما پایگاه داده شما ممکن است از آن پشتیبانی نکند.
در این حالت، میتوانید به جای آن از SQL سفارشی استفاده کنید. به عنوان مثال، فرض کنید جدول زیر را دارید:
برای تغییر ساختار آن و بهینهسازی دادههای خود برای تحلیل در Tableau، میتوانید از پرسوجوی SQL سفارشی زیر استفاده کنید:
SELECT Table1.Season ID AS [Season ID],
Table1.Items - Don't like AS [Quantity],
"Don't Like" AS [Reason]
FROM Table1
UNION ALL
SELECT Table1.Season ID AS [Season ID],
Table.Items - Defective AS [Quantity],
"Defective" AS [Reason]
FROM Table1
UNION ALL
SELECT Table1.Season ID AS [Season ID],
Table1.Items - Too big AS [Quantity],
"Too Big" AS [Reason]
FROM Table1
UNION ALL
SELECT Table1.Season ID AS [Season ID]
نتیجه کوئری در دیتا گرید به شکل زیر خواهد بود:
ترکیب (join) و تجمیع دادههای شما
اگر نیاز به ترکیب جداول و تجمیع دادههای خود دارید، میتوانید از گزینههای join و نوع تجمیع پیشفرض در لایه فیزیکی بوم در Tableau استفاده کنید. در برخی موارد، ممکن است لازم باشد به جای آن از SQL سفارشی استفاده کنید.
به عنوان مثال، فرض کنید دو جدول زیر را دارید: Orders و Vendors.
شما میتوانید از کوئری SQL سفارشی زیر برای یافتن تعداد سفارشات و انجام اتصال چپ (left join) در جداول سفارشات (Orders) و فروشندگان (Vendors) استفاده کنید:
SELECT Vendors.Name,COUNT(Orders.Order) AS Number Of Orders
FROM Orders
LEFT JOIN Vendors
ON Orders.VendorID=Vendors.VendorID
GROUP BY Name;
نتیجه کوئری به این شکل است:
خطاهای مربوط به ارجاع ستونهای تکراری
اگر پرسوجوی SQL سفارشی شما به ستونهای تکراری ارجاع دهد، ممکن است هنگام تلاش برای استفاده از یکی از ستونها در تحلیل خود در Tableau با خطا مواجه شوید. این اتفاق حتی اگر پرسوجو معتبر باشد نیز رخ خواهد داد.
به عنوان مثال، پرسوجوی زیر را در نظر بگیرید:
SELECT * FROM authors, titleauthor WHERE authors.au_id = titleauthor.au_id
پرسوجو معتبر است، اما فیلد au_id
مبهم است زیرا در این حالت هم در جدول “authors” و هم در جدول “titleauthor” وجود دارد. Tableau به پرسوجو متصل خواهد شد اما هر زمان که سعی کنید از فیلد au_id
استفاده کنید، خطا دریافت خواهید کرد. این به این دلیل است که Tableau نمیداند شما به کدام جدول اشاره میکنید.
نکته: بهترین روش این است که تا حد امکان در یک پرسوجوی SQL سفارشی، alias (نام مستعار) ستونها را با یک عبارت AS تعریف کنید. این به این دلیل است که هر پایگاه داده قوانین خاص خود را در مورد تولید خودکار نام ستون در صورت عدم استفاده از alias دارد.
ویرایش یک پرسوجوی SQL سفارشی
برای ویرایش یک پرسوجوی SQL سفارشی:
- در صفحه Data Source، در Canvas، روی پرسوجوی SQL سفارشی در لایه منطقی دو بار کلیک کنید.
- ماوس را روی جدول SQL سفارشی در لایه فیزیکی نگه دارید تا فلش نمایش داده شود.
- روی فلش کلیک کرده و سپس Edit Custom SQL Query (ویرایش پرسوجوی SQL سفارشی) را انتخاب کنید.
- در کادر محاورهای، پرسوجوی SQL سفارشی را ویرایش کنید.
برای تغییر نام یک پرسوجوی SQL سفارشی
هنگامی که یک پرسوجوی SQL سفارشی را به لایه منطقی Canvas میکشید، Tableau یک نام پیشفرض به آن میدهد: Custom SQL Query، Custom SQL Query1 و غیره. میتوانید نام پیشفرض را به چیزی معنیدارتر تغییر دهید.
- در صفحه Data Source، در لایه منطقی Canvas، روی فلش کشویی در جدول پرسوجوی SQL سفارشی کلیک کرده و Rename (تغییر نام) را انتخاب کنید.
- نامی را که میخواهید برای پرسوجوی SQL سفارشی خود استفاده کنید، وارد کنید.
استفاده از پارامترها در یک پرسوجوی SQL سفارشی
شما میتوانید از پارامترها در یک عبارت پرسوجوی SQLسفارشی برای جایگزینی یک مقدار ثابت با یک مقدار پویا استفاده کنید. سپس میتوانید پارامتر را در کتاب کار بهروزرسانی کنید تا اتصال را تغییر دهید. به عنوان مثال، میتوانید به یک پرسوجوی SQL سفارشی متصل شوید که دادههای ترافیک وب را برای یک صفحه خاص که توسط یک pageID مشخص شده است، ارائه میدهد. به جای استفاده از یک مقدار ثابت برای مقدار pageID در پرسوجوی SQL، میتوانید یک پارامتر وارد کنید. سپس پس از اتمام اتصال، میتوانید یک کنترل پارامتر را در کتاب کار نشان دهید. از کنترل پارامتر برای تغییر pageID و دریافت دادهها برای هر صفحه مورد نظر بدون نیاز به ویرایش یا کپی کردن اتصال استفاده کنید.
در Tableau Desktop، میتوانید یک پارامتر را مستقیماً از کادر محاورهای Custom SQL ایجاد کنید یا از هر پارامتری که بخشی از کتاب کار است استفاده کنید. اگر یک پارامتر جدید ایجاد کنید، مانند هر پارامتر دیگری برای استفاده در کتاب کار در دسترس قرار میگیرد.
برای وب نویسی (در Tableau Cloud یا Tableau Server)، میتوانید از یک پارامتر موجود منتشر شده از Tableau Desktop استفاده کنید. نمیتوانید در وب نویسی پارامتر جدیدی ایجاد کنید.
برای افزودن پارامتر به یک پرسوجوی SQL سفارشی
- در صفحه منبع داده، در بوم، نشانگر ماوس را روی جدول نگه دارید تا نماد ویرایش نمایش داده شود و سپس روی دکمه ویرایش کلیک کنید.
- در پایین کادر محاورهای، روی Insert Parameter (درج پارامتر) کلیک کنید.
- یک مقدار ثابت را در عبارت SQL انتخاب کنید و سپس، از منوی کشویی Insert Parameter، پارامتری را که میخواهید به جای آن استفاده کنید، انتخاب کنید. اگر هنوز پارامتری ایجاد نکردهاید، Create a new parameter (ایجاد یک پارامتر جدید) را انتخاب کنید.
نکته: پارامترها فقط میتوانند مقادیر تحتاللفظی (literal values) را جایگزین کنند. آنها نمیتوانند عبارات یا شناسهها مانند نام جداول را جایگزین کنند.
در مثال زیر، پرسوجوی SQL سفارشی تمام سفارشاتی را که به عنوان اولویت Urgent (فوری) علامتگذاری شدهاند، برمیگرداند. در عبارت SQL سفارشی، اولویت سفارش مقدار ثابت است. اگر میخواهید اتصال را برای مشاهده سفارشات با اولویت High (بالا) تغییر دهید، باید منبع داده را ویرایش کنید.
به جای ایجاد و نگهداری چندین تغییر از یک پرسوجو، میتوانید مقدار ثابت اولویت سفارش را با یک پارامتر جایگزین کنید. پارامتر باید شامل تمام مقادیر ممکن برای Order Priority باشد.
پس از ایجاد یک پارامتر، میتوانید آن را در عبارت SQL وارد کنید تا مقدار ثابت را جایگزین کنید.
پس از اتمام ویرایش اتصال، پارامتر جدید در قسمت Parameters در پایین پنجره Data Pane لیست شده و کنترل پارامتر در سمت راست نما نمایش داده میشود. با انتخاب مقادیر مختلف، اتصال بهروزرسانی میشود.
نکته: اگر از یک Extract استفاده میکنید، برای انعکاس تغییرات در پارامتر، باید Extract را تازهسازی کنید.
انتشار یک منبع داده که از پارامترهای SQL سفارشی استفاده میکند، شامل پارامترها نیز میشود. پارامترها به هر ورکبوکی که به منبع داده متصل میشود، منتقل میشوند.
پشتیبانی Tableau Catalog از SQL سفارشی
پشتیبانی از SQL سفارشی در Tableau Catalog بستگی به پرسوجوی SQLسفارشی دارد. Tableau Catalog به عنوان بخشی از پیشنهاد Data Management برای Tableau Server و Tableau Cloud در دسترس است.
پرسوجوهای پشتیبانی شده:
Catalog از پرسوجوهای SQL سفارشی زیر پشتیبانی میکند:
- Time zone expressions
- Multiset expressions
- Tableau parameters
از سال 2021.4، Tableau Catalog همچنین از استفاده از گویش Transact-SQL (T-SQL) در SQLسفارشی پشتیبانی میکند، با استثنائات زیر:
- Hints
- FOR clauses
- OPENROWSET, OPENXML, and OPENJSON functions
- ODBC scalar functions
- FOR SYSTEM_TIME
- TABLESAMPLE
- MATCH expression
- CONTAINS expression
- FREETEXT expression
با شروع از Tableau Cloud اکتبر 2023 و Tableau Server 2023.3، Tableau Catalog همچنین از کوئریهای SQLسفارشی که از PostgreSQL استفاده میکنند، پشتیبانی میکند، با استثنائات زیر:
- XML function
- JSON functions and operators
ویژگیها و عملکردهای پشتیبانیشده
- MySQL GROUP_CONCAT function
- PostgreSQL arrays
- PostgreSQL EXTRACT() function
ممکن است سناریوها و عملکردهای SQL سفارشی دیگری نیز کار کنند، اما Tableau به طور خاص آنها را آزمایش یا پشتیبانی نمیکند.
تبارنامه پشتیبانی شده (Supported Lineage)
هنگامی که یک دارایی از SQLسفارشی استفاده میکند، پیامی با دکمه Show Custom SQL Query (نمایش پرسوجوی SQLسفارشی) در تب Lineage (تبارنامه/ریشه) صفحه دارایی ظاهر میشود. روی دکمه کلیک کنید تا SQL سفارشی استفاده شده در اتصال را ببینید. سپس، اگر مایلید SQL سفارشی را در کلیپبورد خود کپی کنید، روی Copy (کپی) کلیک کنید.
برخی از انواع SQLسفارشی میتوانند باعث ناقص شدن تبار بالادستی شوند. وقتی این اتفاق میافتد، پیامی با آن اطلاعات ظاهر میشود. کارتهای جزئیات فیلد ممکن است حاوی پیوند به ستونهای متصل نباشند، یا ممکن است اصلاً هیچ ستون متصلی را نشان ندهند. کارتهای جزئیات ستون ممکن است حاوی پیوند به فیلدهایی که از ستون استفاده میکنند نباشند، یا ممکن است اصلاً هیچ فیلدی را نشان ندهند.
اگر تبار یک جدول را بررسی میکنید، توجه داشته باشید که کاتالوگ از نمایش اطلاعات ستون در تبار برای ابردادههای جدول جمعآوریشده با استفاده از SQLسفارشی پشتیبانی نمیکند. با این حال، اگر داراییهای دیگری از همان جدول استفاده میکنند و از SQL سفارشی استفاده نمیکنند، کاتالوگ Tableau ممکن است بتواند اطلاعات مربوط به ستونهایی را که از طریق این داراییهای دیگر کشف کرده است، نمایش دهد.
در تصویر زیر، جدول factAccountOpportunityByQuarter به دلیل استفاده توسط یک منبع داده، ایندکس شده است. با این حال، از آنجا که توسط یک پرسوجوی SQL سفارشی ارجاع داده شده است، اطلاعات ستون در دسترس نیست.
در مواردی که بیش از یک منبع داده، ورکبوک یا فلو از یک جدول استفاده میکنند، هر یک از داراییهای پاییندستی آن جدول که از یک کوئری SQLسفارشی استفاده میکنند، هنگام اعمال فیلترهای سطح ستون، حذف میشوند. در نتیجه، داراییهای پاییندستی کمتری نسبت به آنچه که واقعاً استفاده میشوند، در دودمان نشان داده میشوند.
برای خرید لایسنس نرم افزار Tableau ، میتوانید از خدمات ما استفاده نموده و درخواست خود را از طریق فرم زیر ثبت نمایید.
بدون دیدگاه