Lưu ý: Kể từ phiên bản Tableau Prep Builder 2019.2.2 trở đi đã hỗ trợ sử dụng Initial SQL nhưng vẫn chưa cung cấp đầy đủ tất cả tùy chọn như được hỗ trợ bởi Tableau Desktop.
Khi kết nối với một số cơ sở dữ liệu, bạn có thể chỉ định một lệnh initial SQL sẽ chạy khi kết nối được thực hiện với cơ sở dữ liệu. Ví dụ, khi bạn một workbook, làm mới một bản trích xuất (extract), đăng nhập vào Tableau server hoặc xuất bản lên Tableau server.
Initial SQL sẽ không chạy khi bạn làm mới view. Lưu ý rằng initial SQL này thì khác với một kết nối SQL tùy chỉnh. Một kết nối SQL tùy chỉnh xác định một quan hệ (hoặc bảng) để đưa ra truy vấn.
Bạn có thể dùng lệnh này để:
- Thiết lập các bảng tạm thời để sử dụng trong phiên.
- Thiết lập một môi trường dữ liệu tùy chỉnh.
Bạn có tùy chọn để thêm một lệnh initial SQL trong hộp thoại Server Connection hoặc trên trang Data Source.
Lưu ý: Nếu nguồn dữ liệu của bạn hỗ trợ chạy câu lệnh initial SQL, một liên kết Initial SQL sẽ xuất hiện ở góc dưới bên trái của hộp thoại Server Connection.
1. Sử dụng initial SQL
- Bước 1: Trong hộp thoại Server Connection, nhấn vào Initial SQL. Hoặc trên trang Data Source, chọn Data > Initial SQL hoặc Data > Query Banding and Initial SQL phụ thuộc vào cơ sở dữ liệu bạn kết nối.
- Bước 2: Nhập câu lệnh SQL vào hộp thoại Initial SQL. Bạn có thể sử dụng menu Insert để chuyển các tham số vào nguồn dữ liệu của mình.
Lưu ý: Tableau không kiểm tra câu lệnh để tìm lỗi. Câu lệnh SQL này đơn giản được gửi đến cơ sở dữ liệu khi bạn kết nối.
Giấy phép phần mềm của bạn có thể hạn chế bạn sử dụng Initial SQL với kết nối của bạn. Nếu bạn xuất bản lên Tableau Server, máy chủ phải được cấu hình để cho phép các câu lệnh initial SQL. Theo mặc định, phần mềm máy chủ được cấu hình để cho phép các câu lệnh này chạy khi workbook được tải trong một trình duyệt web.
Quản trị viên có thể định cấu hình máy chủ để bỏ qua các câu lệnh initial SQL bằng cách dùng lệnh tsm configuration set:
tsm configuration set -k vizqlserver.initialsql.disabled -v true
Nếu máy chủ không cho phép các câu lệnh SQL, workbook mở nhưng các câu lệnh initial SQL không được gửi.
2. Các tham số trong câu lệnh initial SQL
Bạn có thể chuyển các tham số cho nguồn dữ liệu của mình trong một câu lệnh initial SQL. Có một số lý do tại sao điều này lại hữu ích:
- Bạn có thể định cấu hình mạo danh bằng các tham số TableauServerUser hoặc TableauServerUserFull.
- Nếu nguồn dữ liệu của bạn hỗ trợ nó, bạn có thể thiết lập bảo mật cấp hàng (ví dụ, cho Oracle VPD hoặc SAP Sybase ASE) để đảm bảo rằng người dùng chỉ xem dữ liệu mà họ được phép xem.
- Bạn có thể cung cấp thêm chi tiết trong việc ghi nhật ký, ví dụ: phiên bản Tableau hoặc tên workbook.
Các tham số dưới đây được hỗ trợ trong câu lệnh initial SQL.
Tham số | Mô tả | Ví dụ giá trị trả về |
---|---|---|
TableauServerUser | Tên người dùng của người dùng máy chủ hiện tại. Sử dụng khi thiết lập mạo danh trên máy chủ. Trả về chuỗi trống nếu người dùng chưa đăng nhập vào Tableau Server. | jsmith |
TableauServerUserFull | Tên người dùng và miền của người dùng máy chủ hiện tại. Sử dụng khi thiết lập mạo danh trên máy chủ. Trả về một chuỗi trống nếu người dùng chưa đăng nhập vào Tableau Server. | domain.lan\jsmith |
TableauApp | Tên của ứng dụng Tableau. | Tableau Desktop Professional Tableau Server |
TableauVersion | Phiên bản của ứng dụng Tableau. | 9.3 |
WorkbookName | Tên của Tableau workbook. Chỉ sử dụng trong Workbooks với một nguồn dữ liệu được nhúng. | Financial-Analysis |
2.1. Ví dụ
Các ví dụ dưới đây biểu diễn nhiều cách khác nhau mà bạn có thể sử dụng tham số trong câu lệnh initial SQL.
- Ví dụ này đặt ngữ cảnh bảo mật trên Microsoft SQL Server:
EXECUTE AS USER = [TableauServerUser] WITH NO REVERT;
- Ví dụ này cho thấy cách, trên nguồn dữ liệu DataStax, bạn có thể sử dụng các tham số để thêm chi tiết vào nhật ký hoặc thiết lập một biến phiên để theo dõi dữ liệu:
SET TABLEAUVERSION [TableauVersion];
- Ví dụ này có thể được dùng để thiết lập bảo mật cấp hàng cho Oracle VPD:
begin
DBMS_SESSION.SET_IDENTIFIER([TableauServerUser]);
end;
Lưu ý: Các khối Oracle PL/SQL yêu cầu dấu chấm phẩy ở cuối để kết thúc khối. Tham khảo tài liệu Oracle để biết cú pháp thích hợp.
2.2. Trì hoãn việc thực thi đối với máy chủ
Bạn có thể trì hoãn một câu lệnh initial SQL để nó chỉ được thực thi trên máy chủ. Một lý do để trì hoãn việc thực thi đối với máy chủ là nếu bạn không có quyền thực thi các lệnh thiết lập mạo danh. Sử dụng thẻ <ServerOnly></ServerOnly> để bao quanh các lệnh chỉ được thực thi trên máy chủ. Ví dụ:
CREATE TEMP TABLE TempTable(x varchar(25));
INSERT INTO TempTable VALUES (1);
<ServerOnly>INSERT INTO TempTable Values(2);</ServerOnly>
2.3. Bảo mật và mạo danh
Nếu bạn sử dụng tham số TableauServerUser hoặc TableauServerUserFull trong một câu lệnh initial SQL, bạn sẽ tạo ra một kết nối chuyên dụng không thể chia sẻ với những người dùng khác. Điều này cũng sẽ hạn chế chia sẻ bộ nhớ cache, có thể tăng cường bảo mật nhưng cũng có thể làm chậm hiệu suất.
3. Khắc phục sự cố “tạo bảng” cho các kết nối MySQL và Oracle
3.1. Đối với kết nối MySQL, các bảng không được liệt kê sau khi dùng initial SQL để tạo bảng
Khi bạn kết nối với MySQL, nếu bạn chạy một câu lệnh initial SQL như dưới đây, các bảng có thể không hiển thị do cách Tableau xây dựng truy vấn:
CREATE TABLE TestV1.testtable77(testID int);
Để giải quyết vấn đề này, thêm IF NOT EXISTS vào câu lệnh SQL:
CREATE TABLE IF NOT EXISTS TestV1.TestTable(testID int);
3.2. Đối với kết nối Oracle, sử dụng initial SQL để tạo bảng khiến Tableau đình trệ
Khi bạn kết nối đến Oracle và chạy một câu lệnh initial SQL như dưới đây, Tableau bị đình trệ vì cách mà nó xây dựng truy vấn:
CREATE TABLE TEST_TABLE (TESTid int)
Để giải quyết vấn đề này, hãy dùng câu lệnh SQL sau:
BEGIN
EXECUTE IMMEDIATE ‘create table test_table(testID int)’;
EXCEPTION
WHEN OTHERS THEN NULL;
END;
Trên đây là hướng dẫn chạy câu lệnh initial SQL trong Tableau. Mong rằng những kiến thức được BAC chia sẻ trên đây sẽ hữu ích với bạn đọc. Đừng quên theo dõi các bài viết mới nhất tại website bacs.vn và tham gia khóa học Tableau tại BAC để trang bị cho mình những kiến thức nền tảng về phân tích và trực quan dữ liệu.
Nguồn tham khảo:
Nhu cầu đào tạo doanh nghiệp
BAC là đơn vị đào tạo BA đầu tiên tại Việt Nam. Đối tác chính thức của IIBA quốc tế. Ngoài các khóa học public, BAC còn có các khóa học in house dành riêng cho từng doanh nghiệp. Chương trình được thiết kế riêng theo yêu cầu của doanh nghiệp, giúp doanh nghiệp giải quyết những khó khăn và tư vấn phát triển.
Các bài viết liên quan Power BI:
- Power BI cơ bản cho người mới bắt đầu
- Chỉnh sửa và định hình dữ liệu trong Power BI Desktop
- Kết hợp dữ liệu trong Power BI Desktop
- Hướng dẫn kết nối dữ liệu trong Power BI Desktop
- Hướng dẫn tải & cài đặt Power BI trên máy tính
- Khóa học Phân tích và trực quan hóa dữ liệu với Power BI
- Power BI là gì?
Các bài viết liên quan:
- TABLEAU – Giải pháp BUSINESS INTELLIGENCE (BI) – click vào đây
- Hướng dẫn cài đặt và Sử dụng TABLEAU – click vào đây
- Tính năng mới trên tableau – verion 2019.1 – click vào đây
BAC – Biên soạn và tổng hợp nội dung