เรียกใช้ SQL เริ่มต้น
หมายเหตุ: Tableau Prep Builder เวอร์ชัน 2019.2.2 และใหม่กว่ารองรับการใช้ SQL เริ่มต้น แต่ยังไม่รองรับตัวเลือกเดียวกันทั้งหมดที่รองรับโดย Tableau Desktop หากต้องการข้อมูลเกี่ยวกับการใช้ SQL เริ่มต้นร่วมกับ Tableau Prep Builder โปรดดูใช้ SQL เริ่มต้นเพื่อค้นหาการเชื่อมต่อของคุณ(ลิงก์จะเปิดในหน้าต่างใหม่)ในความช่วยเหลือของ Salesforce สำหรับ Tableau Prep Builder
เมื่อเชื่อมต่อกับฐานข้อมูลบางส่วน คุณจะสามารถระบุคำสั่ง SQL เริ่มต้นที่จะทำงานหรือใช้ค่าที่แคชเมื่อมีการเชื่อมต่อกับฐานข้อมูลได้ ตัวอย่างเช่น เมื่อคุณเปิดเวิร์กบุ๊ก รีเฟรชการแยกข้อมูล ลงชื่อเข้าใช้ Tableau Server หรือเผยแพร่ไปยัง Tableau Server
หมายเหตุ: SQL เริ่มต้นนี้แตกต่างจากการเชื่อมต่อ SQL แบบปรับแต่งเอง การเชื่อมต่อ SQL แบบปรับแต่งเองจะกำหนดความสัมพันธ์ (หรือตาราง) ที่จะออกคำสั่งค้นหา หากต้องการข้อมูลเพิ่มเติม โปรดดู เชื่อมต่อกับการค้นหา SQL แบบปรับแต่งเอง
คุณสามารถใช้คำสั่งนี้เพื่อ:
ตั้งค่าตารางชั่วคราวเพื่อใช้ในระหว่างเซสชั่น
ตั้งค่าสภาพแวดล้อมข้อมูลที่กำหนดเอง
คุณมีตัวเลือกในการเพิ่มคำสั่ง SQL เริ่มต้นในกล่องโต้ตอบ “การเชื่อมต่อเซิร์ฟเวอร์” หรือบนหน้า “แหล่งข้อมูล”
หมายเหตุ: หากแหล่งข้อมูลของคุณรองรับการเรียกใช้คำสั่ง SQL เริ่มต้น ลิงก์ SQL เริ่มต้นจะปรากฏที่มุมล่างซ้ายของกล่องโต้ตอบ “การเชื่อมต่อเซิร์ฟเวอร์” หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับแหล่งข้อมูลของคุณ โปรดดู ตัวเชื่อมต่อที่รองรับ
การใช้ SQL เริ่มต้น
ในกล่องโต้ตอบ “การเชื่อมต่อเซิร์ฟเวอร์” ให้คลิก SQL เริ่มต้น หรือในหน้า “แหล่งข้อมูล” ให้เลือกข้อมูล > SQL เริ่มต้น หรือข้อมูล > การกำหนดช่วงการค้นหาและ SQL เริ่มต้น โดยขึ้นอยู่กับฐานข้อมูลที่คุณเชื่อมต่อ
ป้อนคำสั่ง SQL ลงในกล่องโต้ตอบ “SQL เริ่มต้น” คุณสามารถใช้เมนูดรอปดาวน์แทรกเพื่อส่งพารามิเตอร์ไปยังแหล่งข้อมูลของคุณได้
หมายเหตุ: Tableau ไม่ได้ตรวจสอบคำสั่งเพื่อหาข้อผิดพลาด คำสั่ง SQL นี้จะส่งไปยังฐานข้อมูลเมื่อคุณเชื่อมต่อ
ใบอนุญาตซอฟต์แวร์ของคุณอาจจำกัดไม่ให้คุณใช้ SQL เริ่มต้นกับการเชื่อมต่อของคุณ หากคุณเผยแพร่ไปยัง Tableau Server เซิร์ฟเวอร์ต้องได้รับการกำหนดค่าให้อนุญาตสำหรับคำสั่ง SQL เริ่มต้น โดยค่าเริ่มต้นแล้ว ซอฟต์แวร์เซิร์ฟเวอร์จะได้รับการกำหนดค่าเพื่ออนุญาตให้คำสั่งเหล่านี้ทำงานได้เมื่อโหลดเวิร์กบุ๊กในเว็บเบราว์เซอร์
ผู้ดูแลสามารถกำหนดค่าเซิร์ฟเวอร์ให้ละเว้นคำสั่ง SQL เริ่มต้นโดยใช้คำสั่ง tsm configuration set
:
tsm configuration set -k vizqlserver.initialsql.disabled -v true
หากเซิร์ฟเวอร์ไม่อนุญาตคำสั่ง SQL เริ่มต้น เวิร์กบุ๊กจะเปิดขึ้น แต่จะไม่มีการส่งคำสั่ง SQL เริ่มต้น
หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับคำสั่ง tsm configuration set
โปรดดูความช่วยเหลือของ Tableau Server(ลิงก์จะเปิดในหน้าต่างใหม่)
พารามิเตอร์ในคำสั่ง SQL เริ่มต้น
คุณสามารถส่งพารามิเตอร์ไปยังแหล่งข้อมูลของคุณในคำสั่ง SQL เริ่มต้นได้ รายการต่อไปนี้มีประโยชน์หลายประการในการใช้พารามิเตอร์ในคำสั่ง SQL เริ่มต้น
คุณสามารถกำหนดค่าการแอบอ้างบุคคลอื่นโดยใช้พารามิเตอร์ TableauServerUserr หรือ TableauServerUserFull ได้
หากแหล่งข้อมูลของคุณรองรับ คุณสามารถตั้งค่าการรักษาความปลอดภัยระดับแถว (เช่น สำหรับ Oracle VPD หรือ SAP Sybase ASE) ได้ เพื่อให้แน่ใจว่าผู้ใช้จะเห็นเฉพาะข้อมูลที่ได้รับอนุญาตให้เห็นเท่านั้น
คุณสามารถให้รายละเอียดเพิ่มเติมในการบันทึกได้ ตัวอย่างเช่น เวอร์ชัน Tableau หรือชื่อเวิร์กบุ๊ก
พารามิเตอร์ต่อไปนี้ได้รับการรองรับในคำสั่ง SQL เริ่มต้น:
พารามิเตอร์ | คำอธิบาย | ตัวอย่างค่าที่ส่งคืน |
TableauServerUser | ชื่อผู้ใช้ของผู้ใช้เซิร์ฟเวอร์ปัจจุบัน ใช้เมื่อตั้งค่าการแอบอ้างบุคคลอื่นบนเซิร์ฟเวอร์ ส่งคืนสตริงว่างหากผู้ใช้ไม่ได้ลงชื่อเข้าใช้ Tableau Server | jsmith |
TableauServerUserFull | ชื่อผู้ใช้และโดเมนของผู้ใช้เซิร์ฟเวอร์ปัจจุบัน ใช้เมื่อตั้งค่าการแอบอ้างบุคคลอื่นบนเซิร์ฟเวอร์ ส่งคืนสตริงว่างหากผู้ใช้ไม่ได้ลงชื่อเข้าใช้ Tableau Server | domain.lan\jsmith |
แอปTableau | ชื่อของแอปพลิเคชัน Tableau | Tableau Desktop Professional Tableau Server |
เวอร์ชันTableau | เวอร์ชันของแอปพลิเคชัน Tableau | 9.3 |
ชื่อเวิร์กบุ๊ก | ชื่อของเวิร์กบุ๊ก Tableau ใช้ในเวิร์กบุ๊กที่มีแหล่งข้อมูลแบบฝังเท่านั้น | การวิเคราะห์ทางการเงิน |
คำเตือน: Tableau Desktop ไม่มีโดเมน คุณสามารถรวมไว้ได้หากคุณไม่ได้ใช้การมอบสิทธิ์และคุณตั้งค่า tsm configuration set -k DelegationUseFullDomainName=-v true--force-keys
ตัวอย่างต่อไปนี้จะแสดงวิธีต่างๆ ที่คุณสามารถใช้พารามิเตอร์ในคำสั่ง SQL เริ่มต้นได้
- ตัวอย่างนี้จะตั้งค่าบริบทการรักษาความปลอดภัยบน Microsoft SQL Server:
EXECUTE AS USER = [TableauServerUser] WITH NO REVERT;
ตัวอย่างนี้แสดงให้เห็นว่าบนแหล่งข้อมูล DataStax คุณสามารถใช้พารามิเตอร์เพื่อเพิ่มรายละเอียดในการบันทึกหรือตั้งค่าตัวแปรเซสชันเพื่อติดตามข้อมูล
SET TABLEAUVERSION [TableauVersion];
คุณสามารถใช้ตัวอย่างนี้เพื่อช่วยตั้งค่าการรักษาความปลอดภัยระดับแถวสำหรับ Oracle VPD ได้:
begin
DBMS_SESSION.SET_IDENTIFIER([TableauServerUser]);
end;
หมายเหตุ: การบล็อกของ Oracle PL/SQL กำหนดให้มีเซมิโคลอนต่อท้ายเพื่อยุติการบล็อก ศึกษาเอกสารของ Oracleเพื่อดูไวยากรณ์ที่เหมาะสม
เลื่อนการดำเนินการกับเซิร์ฟเวอร์
คุณสามารถเลื่อนคำสั่ง SQL เริ่มต้นเพื่อให้มีการดำเนินการคำสั่งนี้เฉพาะบนเซิร์ฟเวอร์ได้ เหตุผลหนึ่งในการเลื่อนการดำเนินการกับเซิร์ฟเวอร์คือในกรณีที่คุณไม่ได้รับอนุญาตให้ดำเนินการคำสั่งที่ตั้งค่าการแอบอ้างเป็นบุคคลอื่น ใช้แท็ก <เซิร์ฟเวอร์เท่านั้น></เซิร์ฟเวอร์เท่านั้น> เพื่อใส่คำสั่งที่จะดำเนินการบนเซิร์ฟเวอร์เท่านั้น
ตัวอย่าง:
CREATE TEMP TABLE TempTable(x varchar(25)); INSERT INTO TempTable VALUES (1); <ServerOnly>INSERT INTO TempTable Values(2);</ServerOnly>
การรักษาความปลอดภัยและการแอบอ้างเป็นบุคคลอื่น
เมื่อคุณใช้พารามิเตอร์ TableauServerUser หรือ TableauServerUserFull ในคำสั่ง SQL เริ่มต้น คุณจะสร้างการเชื่อมต่อเฉพาะที่ใช้ร่วมกันกับผู้ใช้รายอื่นไม่ได้ พารามิเตอร์นี้จะจำกัดการใช้แคชร่วมกัน ซึ่งสามารถเสริมการรักษาความปลอดภัย แต่อาจทำให้ประสิทธิภาพการทำงานช้าลงได้
แก้ไขปัญหา 'สร้างตาราง' สำหรับการเชื่อมต่อ MySQL และ Oracle
สำหรับการเชื่อมต่อ MySQL ตารางจะไม่แสดงหลังจากใช้ SQL เริ่มต้นเพื่อสร้างตาราง
หลังจากที่เชื่อมต่อกับ MySQL และเรียกใช้คำสั่ง SQL เริ่มต้น ตารางอาจไม่แสดงเนื่องจากวิธีที่ Tableau สร้างการค้นหาขึ้นมา:
CREATE TABLE TestV1.testtable77(testID int);
ในการแก้ไขปัญหานี้ ให้เพิ่ม IF NOT EXISTS
ไปยังคำสั่ง SQL:
CREATE TABLE IF NOT EXISTS TestV1.TestTable(testID int);
สำหรับการเชื่อมต่อ Oracle การใช้ SQL เริ่มต้นเพื่อสร้างตารางจะทำให้ Tableau หยุดทำงาน
หลังจากที่เชื่อมต่อกับ Oracle และเรียกใช้คำสั่ง SQL เริ่มต้น Tableau จะหยุดชะงักพร้อมกับมีรูปวงล้อหมุนเนื่องจากวิธีที่ Tableau สร้างการค้นหาขึ้นมา:
CREATE TABLE TEST_TABLE (TESTid int)
ในการแก้ไขปัญหานี้ ให้ตรวจสอบคำสั่ง SQL ต่อไปนี้:
BEGIN EXECUTE IMMEDIATE 'create table test_table(testID int)'; EXCEPTION WHEN OTHERS THEN NULL; END;