我喜歡數據。它可以用來策劃價值和表達關系的方式從未停止讓我吃驚。就此程度,可視化數據通常是共享見解的最有力方法之一,而 Tableau 肯定是市場上最流行的數據可視化工具之一(如果不是)。對于非技術用戶來說,使用非常直觀的 UI 開發豐富而有意義的圖形非常簡單,而且機罩下有一些非常好的功能,用于在 Tableau 中存儲數據提取時加快查詢性能。

我絕對喜歡 Tableau 的功能是,您可以使用 Tableau 本身使用的相同 GraphQL API 查詢元數據。公開的元數據的一部分包括 Tableau 站點中存在的字段、工作表、表和數據存儲的上流線。通過像這樣的廣泛 API 公開元數據是 Tableau 背后的團隊的一種真正具有前瞻性的想法。

如何使用 Tableau 元數據 API

Tableau 元數據 API 通過 GraphQL 公開,Tableau 包裝在 python 庫 (Tableau 服務器客戶端 )中。此庫是最容易使用的 API 之一 – Tableau 簡化了所有身份驗證和序列化,允許用戶只關注他們想要執行的查詢。

優點:

  • 允許查詢 Tableau 中的許多不同的實體和數據資產
  • API 性能確實不錯,即使請求了大量多維關系
  • Python 客戶端使用非常簡單直觀,可為用戶處理身份驗證和序列化

缺點:

  • 文檔稀疏 – 不清楚何時提供上游或下游數據屬源資產,或者何時提供為空
  • 每個數據資產的”完整”直則不可用,您只能從上游的一個步驟或下游的一個步驟中提取血統(至少從我使用 API 中可以分辨出的)
  • Tableau 每季度左右發布一個新的 API 版本,但文檔沒有描述哪些功能在哪個版本中可用

讓我們看看一些可用于查詢 Tableau 元數據的代碼。

認證

您可以通過使用用戶名和密碼進行身份驗證來使用 Tableau API,但更安全和建議的方法是使用客戶端令牌。我還在下面創建了一個簡單的幫助程序函數來驗證和執行查詢。

Python

 

1
導入os
2
導入表服務器作為asTsc
3

4
環境。獲取"TOKEN_NAME", "一些令牌")

5
令牌os.環境。獲取"TOKEN""您的令牌值")
6
SITE_NAMEos.環境。獲取"SITE_NAME""您的網站"
7

8
# 如果使用 Tableau 在線,這可能是"https://prod-useast-b.online.tableau.com"
9
服務器os.環境。獲取"服務器""您的服務器")
10
SERVER_VERSIONos.環境。獲取('SERVER_VERSION''3

1px;">tableau_authtableau_auth + TSC.個人訪問托肯TOKEN_NAME (SITE_NAME) SITE_NAME

13
服務器TSC.服務器服務器
14
服務器。版本SERVER_VERSION
15

16
# 用于運行查詢的幫助程序函數
17
defrun_query查詢):
18
服務器。身份驗證。sign_intableau_auth):
19
元數據。查詢查詢

20
respresp="數據"=
21
如果resplist
22
respresp=0|
23
返回resp

定義查詢

Tableau 元數據 API 是開始學習 GraphQL 的絕妙方式,因為 Tableau 為您處理所有序列化,其 Graph 遵循一組一致且易于理解的約定。

以下函數執行一個查詢,該查詢將返回站點中存在的所有計算字段。GraphQL 的優美地方是,我們可以同時要求 Tableau 返回引用每個計算字段的所有 字段,并且 我們可以更深入地請求引用計算字段的每個字段的所有工作表。

Python

 

1
defget_all_calculated_fieldsbatch_size=100):
2
all_calculated_fields ]
3
has_next真實
4
開始0
5
查詢 = ""

7
  {
8
  計算字段連接(第一:%s,偏移量:%s)|
9
  節點 |
10
  id
11
  名稱
12
  公式
13
  引用的菲爾德 |
14
 ID

16
  名稱
17
  紙張 |
18
  id
19
  名稱
20
  }
21
  }
22
 ? ? ? ? ? ? ?  }

24
  page_
25
  有下一頁
26
  端詛一器
27
  }
28
  }
29
  }
30
  ""%batch_size開始
31
all_calculated_fields . all_calculated_fields擴展(resp="計算字段連接"=="節點"=)

33
開始開始= batch_sizebatch_size
34
如果resp="計算字段連接"="pageinfo"="hasnextpage"錯誤
35
has_next
36

37
返回all_calculated_fields
2
defget_all_calculated_fieldsbatch_size=100):

創建數據線

現在,您已經擁有了 Tableau 的元數據,如何構建和使用輸出完全由您決定 這些是網絡關系和數據從法的基本構建基塊。

Python

 

1
節點 |

3
邊緣[ ]
4
用于計算calc_fieldscalc_fields
5
# 將每個計算字段添加到節點
6
calc_field_name"計算場 - "計算calc="名稱"=
7
節點。附加calc_field_name
8

9
# 對于引用計算字段的每個字段,添加一個節點
10
field字段ref_fieldref_field字段的字段:" 字段" =

12
# Calculated fields may show up under referenced fields, if that 
13
# 發生,不要覆蓋現有節點
14
如果字段+"id"not不在節點中
15
field_name"字段 - "字段field="名稱"=
16
。附加((calc_field_namefield_name))
17

18
sheet工作表的打印件[工作表']:

20
sheet_name"工作表 - "+[工作表][名稱]
21
節點。附加sheet_name
22
。附加((field_namesheet_name))
23
返回列表設置節點邊緣)

查看邊緣和節點

現在運行上述所有函數將導致創建可視化數據血統所需的對象org/documentation/stable/tutorial.html"rel="noopener noreferer"目標="_blank">網絡X,以查看輸出。

Python

 

 
1
calculated_fields get_all_calculated_fieldsget_all_calculated_fields()
2
節點邊緣format_nodes_and_edgescalculated_fields
3
節點

5
# [
6
# ? ...
7
# "計算場 - 點擊打開",
8
# "工作表 - 工作表 5",
9
? "計算場 - 每個航班延誤分鐘",
10
# "表 - 機會",
11
# ? ...
12
# ]
13

14
# [

16
# ? ...
17
* ("計算場 - 區域差異", "字段 - 狀態"),
18
# ("字段 - 狀態", "表 - 肥胖散射圖"),
19
# ("字段 - 狀態", "表 - 肥胖地圖"),
20
# ? ...
21
# ]

結束想法

我贊揚 Tableau 支持這種形式的數據訪問,盡管我認為這是一個高度未充分利用和利用不足的好處。許多公司沒有充分利用 Tableau 的此元數據。了解數據之間的移動和依賴關系是一項關鍵功能,尤其是在組織嘗試圍繞數據使用方式維護管理良好的實踐和控制時

Comments are closed.