我喜欢数据。它可以用来策划价值和表达关系的方式从未停止让我吃惊。就此程度,可视化数据通常是共享见解的最有力方法之一,而 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.