我想了解是否可以使用超集API来填充超集数据集。我浏览了documentation,我感觉我们不能像上传CSV文件那样做。我知道另一种可能是直接在数据库中写入,但我发现API更安全,也更易于使用和维护。
发布于 2021-02-10 02:52:44
Superset 1.0有一个新的导入/导出API,允许您这样做,这是我们加载一些新示例仪表板的方式。您需要做的第一件事是通过打开superset_config.py中的VERSIONED_EXPORT功能标志来启用该功能
FEATURE_FLAGS: Dict[str, Any] = {
"VERSIONED_EXPORT": True,
}让我们假设您想要创建一个包含基础表和数据的新数据集。首先,使用以下两个文件创建ZIP文件:
# your_dataset.zip
./metadata.yaml
./datasets/examples/your_dataset.yamlmetadata.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到新的endoint:
$ curl -X POST -F 'formData=@/path/to/your_dataset.zip' https://superset.example.com/api/v1/dataset/import/这将在数据库uuid566ca280-3da8-967e-4aa4-4b349218736a下创建数据集,创建表并填充来自https://example.com/your_dataset.csv的数据。
如果要覆盖现有表或现有dataset上的数据,可以执行类似的过程,但也应该传递-F 'overwrite=true',在这种情况下,现有表将被删除,并由CSV中的数据替换(这样它就可以有一个新的架构)。
目前还不能通过导入/导出API将数据追加到现有表中。您可以使用CSV文件API将数据追加到现有的表中,不过,它具有该选项。
https://stackoverflow.com/questions/66015739
复制相似问题