使用 Apache Superset API 提供数据集

cur*_*uba 5 apache-superset

我想了解是否可以使用 Superset API 填充 Superset 数据集。我浏览了文档,感觉我们不能像上传 CSV 文件那样做到这一点。我知道另一种可能性是直接写入数据库,但我发现 API 更安全,也更易于使用和维护。

Bet*_*ida 7

Superset 1.0 有一个新的导入/导出 API,允许您执行此操作,这就是我们加载一些新示例仪表板的方式。您需要做的第一件事是通过打开VERSIONED_EXPORT以下中的功能标志来启用该功能superset_config.py

FEATURE_FLAGS: Dict[str, Any] = {
    "VERSIONED_EXPORT": True,
}
Run Code Online (Sandbox Code Playgroud)

假设您想要创建一个包含基础表和数据的新数据集。首先,使用这两个文件创建一个 ZIP 文件:

# your_dataset.zip
./metadata.yaml
./datasets/examples/your_dataset.yaml
Run Code Online (Sandbox Code Playgroud)

metadata.yaml文件应如下所示:

# your_dataset.zip
./metadata.yaml
./datasets/examples/your_dataset.yaml
Run Code Online (Sandbox Code Playgroud)

timestamp可以是任何东西)

该文件your_dataset.yaml可以具有任何名称,并且应描述您的列以及您想要在数据集中定义的任何其他指标:

version: 1.0.0
type: SqlaTable
timestamp: '2020-12-23T23:16:56.155576+00:00'
Run Code Online (Sandbox Code Playgroud)

现在POST将文件添加到新的端点:

table_name: your_dataset
main_dttm_col: null
description: null
default_endpoint: null
offset: 0
cache_timeout: null
schema: tap_slack
sql: null
params: null
template_params: null
filter_select_enabled: false
fetch_values_predicate: null
extra: null
uuid: 3e8130eb-0831-d568-b531-c3ce6d68d3d8  # can by any UUID
metrics:
- metric_name: count
  verbose_name: COUNT(*)
  metric_type: count
  expression: COUNT(*)
  description: null
  d3format: null
  extra: null
  warning_text: null
columns:
- column_name: user_id
  verbose_name: null
  is_dttm: false
  is_active: true
  type: VARCHAR
  groupby: true
  filterable: true
  expression: null
  description: null
  python_date_format: null
version: 1.0.0
database_uuid: 566ca280-3da8-967e-4aa4-4b349218736a  # MUST be your database UUID
data: https://example.com/your_dataset.csv
Run Code Online (Sandbox Code Playgroud)

这应该在 UUID 566ca280-3da8-967e-4aa4-4b349218736a 的数据库下创建数据集,创建表并使用https://example.com/your_dataset.csv中的数据填充。

如果您想覆盖现有表或现有数据集上的数据,您可以执行类似的过程,但您还应该传递-F 'overwrite=true',在这种情况下,现有表将被删除并替换为 CSV URL 中的数据(这样就可以有一个新的模式)。

目前无法通过导入/导出 API 将数据附加到现有表。您可以使用 CSV 文件 API 将数据附加到现有表中,不过它有该选项。