استفاده از Stored Procedure در Tableau

استفاده از Stored Procedure در تبلو

قابل اعمال در: Tableau Cloud، Tableau Desktop، Tableau Server

Stored Procedure یک زیرروال (Subroutine) است که برای برنامه‌هایی که به یک سیستم پایگاه‌داده رابطه‌ای دسترسی دارند، در دسترس می‌باشد. زمانی که با Tableau به یک پایگاه‌داده SAP Sybase ASE، Microsoft SQL Server یا Teradata متصل می‌شوید، می‌توانید از Stored Procedure برای تعریف اتصال استفاده کنید.

برای Oracle Database، می‌توانید از Table Function برای تعریف اتصال استفاده کنید. Table Functionهای Oracle عملکردی مشابه Stored Procedureها دارند و در صفحه Data Source زیر بخش «Stored Procedures» فهرست می‌شوند.

وقتی با استفاده از یکی از این نوع داده‌ها یک منبع داده (Data Source) ایجاد می‌کنید، Procedureهای موجود در بخش «Stored Procedures» نمایش داده می‌شوند؛ همان‌طور که در مثال Microsoft SQL Server نشان داده شده است.

استفاده از Stored Procedure در Tableau

از پنل سمت چپ، Procedure را به بوم (Canvas) بکشید یا روی یکی از Procedureهای فهرست‌شده دوبار کلیک کنید. اگر در Procedure پارامترهایی وجود داشته باشد، پنجره گفت‌وگوی «Parameters» به‌صورت خودکار نمایش داده می‌شود.

به‌جای وارد کردن مستقیم یک مقدار، می‌توانید از یک پارامتر موجود در Tableau استفاده کنید یا برای آن مقدار یک پارامتر جدید در Tableau ایجاد نمایید.

استفاده از Stored Procedure در Tableau

اگر سپس پارامتر Tableau را در نما (View) نمایش دهید، کاربران می‌توانند مقدار پارامتر مورد استفاده در Procedure را به‌صورت تعاملی تغییر دهند.

Stored Procedureها از Federation، Relation یا Join پشتیبانی نمی‌کنند. آن‌ها در لایه منطقی (Logical Layer) به‌صورت یک جدول منطقی واحد نمایش داده می‌شوند و امکان باز کردن بوم Join/Union (لایه فیزیکی) را فراهم نمی‌کنند.

نکات مربوط به Stored Procedureها

اگر از Stored Procedureها برای تعریف یک منبع داده در Tableau استفاده می‌کنید، موارد زیر را در نظر داشته باشید:

  • اگر یک Stored Procedure بیش از یک Result Set برگرداند، Tableau فقط اولین مورد را می‌خواند و بقیه را نادیده می‌گیرد.
  • اگر یک Stored Procedure دارای پارامترهای خروجی (Output Parameters) باشد، Tableau آن Stored Procedure را فیلتر می‌کند.
  • Stored Procedureهایی که پارامترهایی با نوع غیر Scalar دارند، کنار گذاشته می‌شوند.
  • ستون‌های Result Set که نوع داده متناظر در Tableau ندارند (مانند varbinary، geometry و hierarchyid) ثبت (Log) می‌شوند. اگر همه ستون‌های Result Set به نوع داده ناشناخته نگاشت شوند، Tableau پیام زیر را نمایش می‌دهد:

“The result set… has no usable columns.”

  • Stored Procedureهایی که هیچ Result Setی برنمی‌گردانند، در صفحه Data Source فهرست می‌شوند اما در صورت انتخاب، با خطا مواجه خواهند شد.
  • اگر برای پارامتری که Stored Procedure به آن نیاز دارد مقداری ارائه نشود، خطا رخ می‌دهد. Tableau نمی‌تواند از قبل تشخیص دهد که کدام پارامترها اجباری هستند.
  • Tableau هیچ‌گونه مدیریت Transaction برای Stored Procedureها انجام نمی‌دهد. بنابراین، نویسندگان Stored Procedure نباید انتظار داشته باشند که Tableau قبل از اجرای Procedure یک Transaction را آغاز کند یا پس از آن Commit انجام دهد.

Use a Stored Procedure

  • برای عملکرد صحیح Stored Procedureها، نام ستون‌ها باید یکتا باشند. اگر دو ستون نام یکسان داشته باشند یا نامی برای آن‌ها تعیین نشده باشد، ممکن است Procedure با خطا مواجه شود.
  • اگر در یک Stored Procedure چندین Query وجود داشته باشد (برای مثال، جهت خواندن مقادیر از جدول دیگر یا نگهداری ترکیب‌های موقت)، همه Queryها باید مجموعه ستون‌های یکسانی را با همان ترتیب (همان نام‌ها و نوع داده‌ها) برگردانند.
    برای اطمینان از تطابق ترتیب و نام ستون‌ها در نتایج Query، ممکن است لازم باشد به‌طور صریح از CAST استفاده کنید تا نوع داده صحیح تعیین شود؛ برای مثال:
CAST(Username as VARCHAR(20))

همچنین ستون‌ها را به‌صورت صریح نام‌گذاری کنید. اگر یک Stored Procedure این دستورالعمل‌ها را رعایت نکند، ممکن است پیام خطای زیر ظاهر شود:

“InsertData: unbound column error”

  • اگر در یک Stored Procedure چندین Query وجود داشته باشد و Procedure خطا تولید کند، سعی کنید دستور زیر را در ابتدای Procedure اضافه کنید:
SET NOCOUNT ON

این کار مانع از آن می‌شود که پیام مربوط به تعداد ردیف‌های تحت تأثیر یک دستور Transact-SQL به‌عنوان بخشی از Result Set مربوط به Query بازگردانده شود.

علاوه بر این، محدودیت‌های دیگری نیز برای برخی پایگاه‌های داده خاص اعمال می‌شود.

محدودیت‌های Stored Procedure برای پایگاه‌داده‌های Teradata

محدودیت‌های زیر برای Stored Procedureها در پایگاه‌داده‌های Teradata اعمال می‌شود:

باید برای همه پارامترها مقدار ارائه شود. اگر کاربر برای یک یا چند پارامتر مقداری وارد نکند، Tableau یک خطای پایگاه‌داده Teradata نمایش می‌دهد که بیان می‌کند تعداد مقادیر ارائه‌شده برای Stored Procedure کافی نیست.

ملاحظات و محدودیت‌های Stored Procedure برای پایگاه‌داده‌های SQL Server

محدودیت‌های زیر برای Stored Procedureها در پایگاه‌داده‌های Microsoft SQL Server اعمال می‌شود:

  • اگر Result Set مربوط به یک Stored Procedure شامل ستون‌هایی از نوع IMAGE یا TEXT باشد، اجرای Stored Procedure با پیام خطای «Incorrect syntax» شکست می‌خورد.
  • اگر مجموع عرض Result Set (تعداد بایت‌های هر سطر) از 8060 بایت بیشتر شود، Stored Procedure اجرا نخواهد شد. این مشکل ممکن است در جدول‌های بسیار بزرگ (دارای صدها ستون) یا جدول‌هایی با ستون‌های متنی بزرگ که برای نگهداری هزاران کاراکتر طراحی شده‌اند رخ دهد.
  • Tableau، Stored Procedureهای موجود در Schema با نام "sys" را نمایش نمی‌دهد.
  • اگر کاربر برای یک یا چند پارامتر موردنیاز Procedure مقداری وارد نکند، Tableau یک خطای SQL Server با ساختاری مشابه زیر نمایش می‌دهد:

“The procedure requires a value for parameter @x but one was not provided.”

  • Stored Procedureهایی که شامل چندین Query هستند باید از دستورالعمل‌های ذکرشده در بخش «Notes on Stored Procedures» پیروی کنند.
  • Tableau Desktop از نوع داده TIME در Microsoft SQL Server پشتیبانی نمی‌کند. اگر فیلدهایی با این نوع داده در یک Stored Procedure وجود داشته باشند، Tableau Desktop آن‌ها را Import نخواهد کرد.

ملاحظات و محدودیت‌های Stored Procedure برای پایگاه‌داده‌های SAP Sybase ASE

محدودیت‌های زیر برای Stored Procedureها در پایگاه‌داده‌های SAP Sybase ASE اعمال می‌شود (فقط در ویندوز):

  • پایگاه‌داده باید دارای یک Remote Server با پیکربندی صحیح باشد.
  • اگر کاربر برای یک یا چند پارامتر موردنیاز Procedure مقداری وارد نکند، Tableau یک خطای پایگاه‌داده Sybase ASE با ساختاری مشابه زیر نمایش می‌دهد:

“The procedure requires a value for parameter @x but one was not provided.”

برای خرید لایسنس نرم افزار Tableau ، می‌توانید از خدمات ما استفاده نموده و درخواست خود را از طریق فرم زیر ثبت نمایید.

فرم درخواست لایسنس Tableau

 

tableau desktop download

 

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *