导入和导出数据源
Superset CLI 允许您将数据源导入和导出为 YAML 格式。数据源包括数据库。数据应按以下层级组织:
├──databases
| ├──database_1
| | ├──table_1
| | | ├──columns
| | | | ├──column_1
| | | | ├──column_2
| | | | └──... (more columns)
| | | └──metrics
| | | ├──metric_1
| | | ├──metric_2
| | | └──... (more metrics)
| | └── ... (more tables)
| └── ... (more databases)
将数据源导出为 YAML
您可以通过运行以下命令将当前数据源打印到标准输出:
superset export_datasources
要将数据源保存到 ZIP 文件,请运行:
superset export_datasources -f <filename>
默认情况下,会省略默认(空)值。使用 -d 标志将其包含在内。如果您希望包含反向引用(例如,一个列包含其所属的表 ID),请使用 -b 标志。
此外,您也可以使用 UI 导出数据源
- 打开 数据源 -> 数据库 以导出与单个或多个数据库关联的所有表。(对于一个或多个表,选择 表)
- 选择您想要导出的项。
- 点击 操作 -> 导出 为 YAML
- 如果您想导入通过 UI 导出的项,需要将其嵌套在其父元素中,例如,一个数据库需要嵌套在“数据库”下,一个表需要嵌套在数据库元素内部。
为了获得使用 YAML 导入时可导入的所有字段的详尽列表,请运行:
superset export_datasource_schema
提醒:您可以使用 -b
标志来包含反向引用。
导入数据源
要从 ZIP 文件导入数据源,请运行:
superset import_datasources -p <path / filename>
可选的用户名标志 -u 用于设置数据源导入所使用的用户。默认用户为 'admin'。示例:
superset import_datasources -p <path / filename> -u 'admin'
传统数据源导入
从旧版本 Superset 导入到当前版本
当使用 Superset 4.x.x 版本从旧版本(2.x.x 或 3.x.x)导入时,导入功能通过命令 legacy_import_datasources
提供支持,该命令需要一个 JSON 文件或 JSON 文件目录。选项包括用于递归的 -r
和用于指定用户的 -u
。无选项的传统导入示例:
superset legacy_import_datasources -p <path or filename>
从旧版本 Superset 导入到更旧版本
当使用旧版 Superset (2.x.x & 3.x.x) 时,命令为 import_datasources
。支持 ZIP 和 YAML 文件,通过功能标志 VERSIONED_EXPORT
进行切换。当 VERSIONED_EXPORT
为 True
时,import_datasources
期望一个 ZIP 文件,否则期望 YAML 文件。示例:
superset import_datasources -p <path or filename>
当 VERSIONED_EXPORT
为 False
时,如果您提供一个路径,所有以 yaml 或 yml 结尾的文件都将被解析。您可以应用额外的标志(例如,递归搜索提供的路径)。
superset import_datasources -p <path> -r
同步标志 -s 接受参数,用于将提供的元素与您的文件同步。请注意,这可能会删除您的元数据库内容。示例:
superset import_datasources -p <path / filename> -s columns,metrics
这将在 Superset 元数据库中同步 <路径/文件名>
中找到的所有数据源的所有度量和列。这意味着未在 YAML 中指定的列和度量将被删除。如果您将表添加到列、度量中,它们也将被同步。
如果您不提供同步标志 (-s),导入将只会添加和更新(覆盖)字段。例如,您可以通过将以下 YAML 保存到文件并运行 import_datasources 命令,为示例数据集中的表 random_time_series
中的 ds
列添加一个 verbose_name
。
databases:
- database_name: main
tables:
- table_name: random_time_series
columns:
- column_name: ds
verbose_name: datetime