초기 SQL 실행

참고: Tableau Prep Builder 버전 2019.2.2 이상은 초기 SQL 사용을 지원하지만 Tableau Desktop에서 지원되는 모든 옵션을 지원하지는 않습니다. Tableau Prep Builder에서 초기 SQL 사용에 대한 자세한 내용은 Tableau Prep Builder 온라인 도움말에서 초기 SQL을 사용하여 연결 쿼리(링크가 새 창에서 열림)를 참조하십시오.

일부 데이터베이스에 연결할 때 통합 문서를 열거나, 추출을 새로 고치거나, Tableau Server에 로그인하거나, Tableau Server에 게시하는 등 데이터베이스에 연결할 경우 실행되는 초기 SQL 명령을 지정할 수 있습니다. 뷰를 새로 고칠 때 초기 SQL은 실행되지 않습니다. 이 초기 SQL은 사용자 지정 SQL 연결과 다르다는 것에 주의하십시오. 사용자 지정 SQL 연결은 쿼리를 실행할 관계(또는 테이블)를 정의합니다. 자세한 내용은 사용자 지정 SQL 쿼리에 연결을 참조하십시오.

이 명령을 사용하여 다음을 수행할 수 있습니다.

  • 세션 중 사용할 임시 테이블 설정

  • 사용자 지정 데이터 환경 설정

서버 연결 대화 상자나 데이터 원본 페이지에 초기 SQL 명령을 추가하는 옵션이 있습니다.

참고: 데이터 원본에서 초기 SQL 문 실행을 지원할 경우 서버 연결 대화 상자 왼쪽 맨 아래에 초기 SQL 링크가 나타납니다. 데이터 원본에 대한 자세한 내용은 지원되는 커넥터를 참조하십시오.

초기 SQL을 사용하려면

  1. 서버 연결 대화 상자에서 초기 SQL을 클릭합니다. 또는 연결하려는 데이터베이스에 따라 데이터 원본 페이지에서 데이터 > 초기 SQL 또는 데이터 > 쿼리 구간 및 초기 SQL을 선택합니다.

  2. 초기 SQL 대화 상자에 SQL 명령을 입력합니다. 삽입 드롭다운 메뉴를 사용하여 데이터 원본으로 매개 변수를 전달할 수 있습니다.

참고: 입력 시 명령문의 오류가 검사되지 않습니다. 이 SQL 문은 연결 시 데이터베이스로 전송되기만 합니다.

소프트웨어 라이선스에 의해 연결에서 초기 SQL 사용이 제한될 수도 있습니다. Tableau Server에 게시하는 경우 초기 SQL 문을 허용하도록 서버를 구성해야 합니다. 기본적으로 서버 소프트웨어는 웹 브라우저에서 통합 문서를 로드할 때 이러한 명령문을 실행할 수 있도록 구성되어 있습니다.

관리자는 tsm configuration set 명령을 사용하여 초기 SQL 문을 무시하도록 서버를 구성할 수 있습니다.

tsm configuration set -k vizqlserver.initialsql.disabled -v true

서버에서 초기 SQL 문을 허용하지 않는 경우 통합 문서는 열리지만 초기 SQL 명령이 전송되지 않습니다.

tsm configuration set 명령에 대한 자세한 내용은 Tableau Server 도움말(링크가 새 창에서 열림)을 참조하십시오.

초기 SQL 문의 매개 변수

초기 SQL 문에서 데이터 원본으로 매개 변수를 전달할 수 있습니다. 다음과 같은 점에서 이 기능이 유용합니다.

  • TableauServerUser 또는 TableauServerUserFull 매개 변수를 사용하여 가장을 구성할 수 있습니다.

  • 데이터 원본이 매개 변수를 지원하는 경우 행 수준 보안(예: Oracle VPD 또는 SAP Sybase ASE용 보안)을 설정하여 사용자가 볼 권한이 있는 데이터만 보게 만들 수 있습니다.

  • 로그에 Tableau 버전이나 통합 문서 이름 같은 보다 자세한 정보를 제공할 수 있습니다.

초기 SQL 문에서 다음과 같은 매개 변수가 지원됩니다.

매개 변수설명반환되는 값의 예
TableauServerUser현재 서버 사용자의 사용자 이름. 서버에서 가장을 설정할 때 사용합니다. 사용자가 Tableau Server에 로그인하지 않은 경우 빈 문자열을 반환합니다.jsmith
TableauServerUserFull현재 서버 사용자의 사용자 이름 및 도메인. 서버에서 가장을 설정할 때 사용합니다. 사용자가 Tableau Server에 로그인하지 않은 경우 빈 문자열을 반환합니다.domain.lan\jsmith
TableauAppTableau 응용 프로그램의 이름입니다.

Tableau Desktop Professional

Tableau Server

TableauVersionTableau 응용 프로그램의 버전입니다.9.3
WorkbookNameTableau 통합 문서의 이름입니다. 내장된 데이터 원본이 있는 통합 문서에만 사용합니다.Financial-Analysis

경고: Tableau Desktop에는 도메인이 포함되어 있지 않습니다. 위임을 사용하지 않고 tsm 구성인 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 문이 서버에서만 실행되도록 실행을 지연시킬 수 있습니다. 서버로 실행을 지연하는 한 가지 이유는 가장을 설정하는 명령을 실행할 수 있는 사용 권한이 없는 경우입니다. 서버에서만 실행되는 명령을 <ServerOnly></ServerOnly> 태그를 사용하여 묶습니다.

예:

CREATE TEMP TABLE TempTable(x varchar(25));
INSERT INTO TempTable VALUES (1);
<ServerOnly>INSERT INTO TempTable Values(2);</ServerOnly>

보안 및 가장

초기 SQL 문에서 TableauServerUser 또는 TableauServerUserFull 매개 변수를 사용할 경우 다른 사용자와 공유할 수 없는 전용 연결을 만듭니다. 또한 캐시 공유도 제한하기 때문에 보안이 향상되지만 성능이 저하될 수 있습니다.

MySQL 및 Oracle 연결의 '테이블 만들기' 문제 해결

MySQL 연결의 경우 초기 SQL을 사용하여 테이블을 만든 후 테이블이 나열되지 않음

MySQL에 연결한 경우 다음과 같은 초기 SQL 문을 실행하면 Tableau가 쿼리를 구성하는 방식 때문에 테이블이 표시되지 않을 수 있습니다.

CREATE TABLE TestV1.testtable77(testID int);

이 문제를 해결하려면 SQL 문에 IF NOT EXISTS 를 추가합니다.

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;

 

피드백을 제공해 주셔서 감사합니다!귀하의 피드백이 제출되었습니다. 감사합니다!