ใช้โพรซีเยอร์ที่จัดเก็บไว้
โพรซีเยอร์ที่จัดเก็บไว้คือรูทีนย่อยที่แอปพลิเคชันซึ่งเข้าถึงระบบฐานข้อมูลเชิงสัมพันธ์สามารถใช้งานได้ เมื่อคุณเชื่อมต่อกับ SAP Sybase ASE, Microsoft SQL Server หรือฐานข้อมูล Teradata ด้วย Tableau คุณสามารถใช้โพรซีเยอร์ที่จัดเก็บไว้เพื่อกำหนดการเชื่อมต่อได้
สำหรับ Oracle คุณสามารถใช้ฟังก์ชันตารางเพื่อกำหนดการเชื่อมต่อได้ ฟังก์ชันตารางของ Oracle จะทำหน้าที่เหมือนโพรซีเยอร์ที่จัดเก็บไว้และระบุไว้ภายใต้โพรซีเยอร์ที่จัดเก็บไว้ในหน้าแหล่งข้อมูล
เมื่อคุณสร้างแหล่งข้อมูลด้วยข้อมูลประเภทต่างๆ เหล่านี้ โพรซีเยอร์ที่สามารถใช้งานได้จะระบุไว้ภายใต้โพรซีเยอร์ที่จัดเก็บไว้ ดังที่ปรากฏในตัวอย่างของ Microsoft SQL Server ดังนี้
จากบานหน้าต่างด้านซ่าย ให้ลากโพรซีเยอร์ไปยังแคนวาสหรือดับเบิลคลิกที่โพรซีเยอร์รายการใดรายการหนึ่งที่ระบุไว้ หากโพรซีเยอร์มีพารามิเตอร์ให้ใช้งาน พารามิเตอร์จะแสดงกล่องโต้ตอบขึ้นมาโดยอัตโนมัติ
คุณสามารถใช้พารามิเตอร์ Tableau เดิมหรือสร้างพารามิเตอร์ Tableau ขึ้นใหม่แทนการป้อนค่าได้ดังนี้
หากคุณเปิดเผยพารามิเตอร์ Tableau ในมุมมอง ผู้ใช้จะสามารถเปลี่ยนแปลงค่าของพารามิเตอร์ในโพรซีเยอร์แบบโต้ตอบได้
โพรซีเยอร์ที่จัดเก็บไว้ไม่รองรับการรวมศูนย์ การเชื่อมโยง หรือการผนวก โพรซีเยอร์เหล่านี้จะแสดงในตารางตรรกะเดียวในชั้นทางตรรกศาสตร์ และไม่อนุญาตให้เปิดแคนวาสการผนวก/การรวม (ชั้นทางกายภาพ)
หมายเหตุเกี่ยวกับโพรซีเยอร์ที่จัดเก็บไว้
โปรดคำนึงถึงสิ่งต่อไปนี้หากคุณใช้โพรซีเยอร์ที่จัดเก็บไว้เพื่อกำหนดแหล่งข้อมูลสำหรับ Tableau
หากโพรซีเยอร์ที่จัดเก็บไว้ส่งคืนเซตผลลัพธ์มากกว่าหนึ่งรายการ Tableau จะอ่านผลลัพธ์รายการแรกและข้ามรายการที่เหลือ
หากโพรซีเยอร์ที่จัดเก็บไว้มีพารามิเตอร์เอาต์พุต Tableau จะกรองโพรซีเยอร์ที่จัดเก็บไว้ออก
โพรซีเยอร์ที่จัดเก็บไว้ซึ่งมีพารามิเตอร์ประเภทไม่ใช่สเกลาร์จะถูกยกเว้น
คอลัมน์เซ็ตผลลัพธ์ที่ไม่ใช่ประเภทที่ตรงกันใน Tableau (เช่น วาร์ไบนารี เรขาคณิต ลำดับชั้น) จะถูกบันทึกไว้ หากคอลัมน์เซ็ตผลลัพธ์ทุกรายการได้แมปประเภทข้อมูลที่ไม่รู้จัก Tableau จะแสดงข้อความดังนี้
"เซตผลลัพธ์... ไม่มีคอลัมน์ที่ใช้งานได้"
โพรซีเยอร์ที่จัดเก็บไว้ซึ่งไม่ส่งคืนเซตผลลัพธ์จะถูกระบุไว้ในหน้าแหล่งข้อมูล ซึ่งหากเลือกจะทำให้เกิดการล้มเหลว
หากไม่มีการระบุค่าให้พารามิเตอร์ที่โพรซีเยอร์ที่จัดเก็บไว้ต้องใช้งาน จะทำให้เกิดข้อผิดพลาด Tableau ไม่สามารถกำหนดล่วงหน้าได้ว่าต้องใช้พารามิเตอร์ใดบ้าง
Tableau จะไม่ดำเนินการจัดการธุรกรรมใดๆ สำหรับโพรซีเยอร์ที่จัดเก็บไว้ ซึ่งผู้เขียนโพรซีเยอร์ที่จัดเก็บไว้จะต้องไม่พึ่งพา Tableau เพื่อเริ่มต้นธุรกรรมก่อนเรียกใช้โพรซีเยอร์ที่จัดเก็บไว้ หรือดำเนินการดังกล่าวหลังจากนั้น
ชื่อคอลัมน์ของโพรซีเยอร์ที่จัดเก็บไว้ที่ใช้เพื่อทำงานจะต้องไม่ซ้ำกัน หากคอลัมน์ทั้งสองคอลัมน์มีชื่อเดียวกันหรือไม่ได้ระบุชื่อไว้ โพรซีเยอร์อาจเกิดข้อผิดพลาดขึ้นได้
หากมีการค้นหาหลายรายการในโพรซีเยอร์ที่จัดเก็บไว้ (ตัวอย่างเช่น หากต้องการอ่านค่าจากตารางอื่น หรือเพื่อจัดเก็บชุดค่าผสมไว้ถาวร) การค้นหาแต่ละรายการต้องส่งคืนชุดคอลัมน์เดียวกันในลำดับเดียวกัน (ชื่อและประเภทข้อมูลเดียวกัน) หากต้องการรับประกันว่าลำดับของคอลัมน์และชื่อตรงกันในผลลัพธ์การค้นหา คุณจำเป็นต้องตั้งชื่อ
CAST
ให้ชัดเจนเพื่อรับประกันว่าประเภทข้อมูลนั้นถูกต้อง เช่นCAST(Username as VARCHAR(20))
และตั้งชื่อคอลัมน์ให้ชัดเจนด้วย หากโพรซีเยอร์ที่จัดเก็บไว้ไม่เป็นไปตามคำแนะนำดังกล่าว ข้อความแสดงข้อผิดพลาดอาจปรากฏขึ้นดังนี้"InsertData: ข้อผิดพลาดคอลัมน์ unbound"
หากมีการค้นหาหลายรายการในโพรซีเยอร์ที่จัดเก็บไว้ (ตัวอย่างเช่น หากต้องการอ่านค่าจากตารางอื่น หรือเพื่อจัดเก็บชุดค่าผสมไว้ถาวร) และโพรซีเยอร์ได้สร้างข้อผิดพลาดขึ้นมาอย่างต่อเนื่อง ให้ลองเพิ่ม
SET NOCOUNT ON
ตรงส่วนบนสุดของโพรซีเยอร์ การดำเนินการเช่นนี้จะเป็นการป้องกันข้อความที่แสดงการนับจำนวนแถวที่ได้รับผลกระทบจากคำสั่ง Transact-SQL จากการส่งคืนโดยเป็นส่วนหนึ่งของเซตผลลัพธ์สำหรับการสืบค้น
โดยข้อจำกัดต่อไปนี้ยังใช้กับฐานข้อมูลบางรายการอีกด้วย
ข้อจำกัดของโพรซีเยอร์ที่จัดเก็บไว้สำหรับฐานข้อมูล Teradata
ข้อจำกัดต่อไปนี้ใช้กับโพรซีเยอร์ที่จัดเก็บไว้บนฐานข้อมูล Teradata
ต้องมีการระบุค่าสำหรับทุกพารามิเตอร์ หากผู้ใช้ไม่ได้ระบุค่าสำหรับพารามิเตอร์อย่างน้อยหนึ่งรายการ Tableau จะแสดงข้อผิดพลาดของฐานข้อมูล Teradata ที่ระบุว่ามีการกำหนดค่าสำหรับโพรซีเยอร์ที่จัดเก็บไว้น้อยเกินไป
ข้อจำกัดของโพรซีเยอร์ที่จัดเก็บไว้สำหรับฐานข้อมูล SQL Server
ข้อจำกัดต่อไปนี้ใช้กับโพรซีเยอร์ที่จัดเก็บไว้บนฐานข้อมูล SQL Server
หากเซตผลลัพธ์สำหรับโพรซีเยอร์ที่จัดเก็บไว้มีคอลัมน์ของประเภท IMAGE หรือ TEXT โพรซีเยอร์ที่จัดเก็บไว้จะล้มเหลวโดยมีข้อความแสดงข้อผิดพลาดที่ว่า "ไวยากรณ์ไม่ถูกต้อง"
หากความกว้างโดยรวมของเซตผลลัพธ์ (จำนวนไบต์ในแต่ละแถว) เกินกว่า 8060 โพรซีเยอร์ที่จัดเก็บไว้จะล้มเหลว ซึ่งสามารถเกิดได้กับตารางที่กว้างเป็นอย่างมาก (กว่าร้อยคอลัมน์) หรือกับตารางที่มีคอลัมน์ข้อความขนาดใหญ่ซึ่งใช้เพื่อจัดเก็บข้อความกว่าพันตัวอักษร
Tableau จะไม่แสดงโพรซีเยอร์ที่จัดเก็บไว้จากสคีมา "sys"
หากผู้ใช้ไม่ระบุค่าในพารามิเตอร์ที่โพรซีเยอร์ต้องใช้งานมากกว่าหนึ่งรายการ Tableau จะแสดงข้อผิดพลาดของฐานข้อมูล SQL Server ในรูปแบบ "โพรซีเยอร์ต้องใช้ค่าสำหรับพารามิเตอร์ @x แต่กลับไม่มีการระบุไว้"
โพรซีเยอร์ที่จัดเก็บไว้ที่มีการสืบค้นหลายรายการจะต้องเป็นไปตามคำแนะนำที่ระบุไว้ในหมายเหตุเกี่ยวกับโพรซีเยอร์ที่จัดเก็บไว้ (ข้างต้น)
Tableau Desktop ไม่รองรับประเภทข้อมูล TIME ของ Microsoft SQL Server เมื่อมีการเพิ่มข้อมูลในฟิลด์ประเภทนี้ในโพรซีเยอร์ที่จัดเก็บไว้บนฐานข้อมูล Microsoft SQL Server จะส่งผลให้ Tableau Desktop ไม่นำเข้าข้อมูลดังกล่าว
ข้อจำกัดของโพรซีเยอร์ที่จัดเก็บไว้สำหรับฐานข้อมูล SAP Sybase ASE
ข้อจำกัดต่อไปนี้ใช้กับโพรซีเยอร์ที่จัดเก็บไว้บนฐานข้อมูล SAP Sybase ASE (เฉพาะ Windows เท่านั้น)
ฐานข้อมูลต้องมีเซิร์ฟเวอร์ระยะไกลที่กำหนดค่าไว้อย่างเหมาะสม
หากผู้ใช้ไม่ระบุค่าในพารามิเตอร์ที่โพรซีเยอร์ต้องใช้งานมากกว่าหนึ่งรายการ Tableau จะแสดงข้อผิดพลาดของฐานข้อมูล Sybase ASE ในรูปแบบ "โพรซีเยอร์ต้องใช้ค่าสำหรับพารามิเตอร์ @x แต่กลับไม่มีการระบุไว้"