استفاده از 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 نشان داده شده است.
از پنل سمت چپ، Procedure را به بوم (Canvas) بکشید یا روی یکی از Procedureهای فهرستشده دوبار کلیک کنید. اگر در Procedure پارامترهایی وجود داشته باشد، پنجره گفتوگوی «Parameters» بهصورت خودکار نمایش داده میشود.
بهجای وارد کردن مستقیم یک مقدار، میتوانید از یک پارامتر موجود در Tableau استفاده کنید یا برای آن مقدار یک پارامتر جدید در 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 بازگردانده شود.
علاوه بر این، محدودیتهای دیگری نیز برای برخی پایگاههای داده خاص اعمال میشود.



بدون دیدگاه