如何将 Tableau .hyper 文件转换为 pandas 数据帧?

How to convert a Tableau .hyper File to a pandas dataframe?

我想将 Tableau .hyper 文件转换为 pandas 数据帧。 可以将数据帧转换为 .hyper 文件,但不幸的是,我无法为这个问题提出解决方案。 如何使用 python 实现此目的?

检查一个 pantab 库:

def frame_from_hyper(fn, table='Extract'):
"""
Extracts a DataFrame from a .hyper extract.
"""

编辑 - 此功能最初并未在 pantab 中实现,但已被添加

对于一次性转换,您可以使用 Tableau Desktop 连接到 hyper extract,然后从数据菜单导出为 CSV。

如果您想要自动执行不需要手动使用 Tableau Desktop 的可重复过程,请让您的数据提供商以 CSV 或其他格式提供数据。

Tableau 最初并未提供 public API 来读取超级数据提取,只是为了创建它们。 (据推测,他们更喜欢人们使用 Tableau 来阅读摘录。)

2019 年底,Tableau 发布了扩展的 Hyper API,现在允许程序从 Hyper 数据提取中读取

Tableau 数据提取仍然通常用作原始数据源的有效镜像 - 而不是确定的来源 - 就像数据库中的物化视图反映基础表一样。随着 API 的成熟,其他用例可能会变得更加突出。

根据您的用例探索其他两个选项,它们可以让您在程序控制下生成 Tableau 数据提取。

已接受的答案已过时。您不再需要使用 Tableau Desktop,现在可以直接读取 .hyper 个文件。

10 月,我们发布了新的 Hyper API,可以读取 Python 中的 .hyper 个文件。 随后,pantab 库更新为使用 Hyper API,现在还能够从 .hyper 文件中读取数据帧。因此,您现在可以使用它的 frame_from_hyper 方法来做到这一点:

result = pantab.frame_from_hyper(database=<PATH TO YOUR HYPER FILE>, table=<TABLE INSIDE THE HYPER FILE>)

如果您不知道 .hyper 文件中 table 的名称,或者如果您的文件中有多个 table,您也可以使用 frames_from_hyper,这会给你一个字典 { table name -> data frame },即文件中每个 table 一帧:

result = pantab.frames_from_hyper(database=<PATH TO YOUR HYPER FILE>)