使用 Apache Superset API 来提供数据集

Use Apache Superset API to feed a dataset

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

Superset 1.0 有一个新的 import/export API 允许您这样做,这就是我们加载一些新示例仪表板的方式。您需要做的第一件事是启用该功能,方法是在 superset_config.py:

中打开 VERSIONED_EXPORT 功能标志
FEATURE_FLAGS: Dict[str, Any] = {
    "VERSIONED_EXPORT": True,
}

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

# your_dataset.zip
./metadata.yaml
./datasets/examples/your_dataset.yaml

metadata.yaml 文件应如下所示:

version: 1.0.0
type: SqlaTable
timestamp: '2020-12-23T23:16:56.155576+00:00'

(timestamp 可以是任何值)

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

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

现在POST文件到新的endint:

$ curl -X POST -F 'formData=@/path/to/your_dataset.zip' https://superset.example.com/api/v1/dataset/import/

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

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

目前无法通过 import/export API 将数据附加到现有的 table。您可以使用 CSV 文件 API 将数据附加到现有的 table,但它有该选项。