เรียกใช้ 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 เริ่มต้น

  1. ในกล่องโต้ตอบ “การเชื่อมต่อเซิร์ฟเวอร์” ให้คลิก SQL เริ่มต้น หรือในหน้า “แหล่งข้อมูล” ให้เลือกข้อมูล > SQL เริ่มต้น หรือข้อมูล > การกำหนดช่วงการค้นหาและ SQL เริ่มต้น โดยขึ้นอยู่กับฐานข้อมูลที่คุณเชื่อมต่อ

  2. ป้อนคำสั่ง 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 Serverjsmith
TableauServerUserFullชื่อผู้ใช้และโดเมนของผู้ใช้เซิร์ฟเวอร์ปัจจุบัน ใช้เมื่อตั้งค่าการแอบอ้างบุคคลอื่นบนเซิร์ฟเวอร์ ส่งคืนสตริงว่างหากผู้ใช้ไม่ได้ลงชื่อเข้าใช้ Tableau Serverdomain.lan\jsmith
แอปTableauชื่อของแอปพลิเคชัน Tableau

Tableau Desktop Professional

Tableau Server

เวอร์ชันTableauเวอร์ชันของแอปพลิเคชัน Tableau9.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;

 

ขอบคุณสำหรับข้อเสนอแนะของคุณส่งข้อเสนอแนะของคุณเรียบร้อยแล้ว ขอขอบคุณ