Superset二次开发之导入导出功能源码解读

news2024/10/5 17:18:27

可导出的类型

支持 看板(Dashboard)、图表(Charts)、数据集(Datasets)、SQL(saved_query)、数据库(Database connection) 单次或批量的导出,和单次导入操作

 看板(Dashboard)

 图表(Charts)

 数据集(Datasets)

 SQL (saved_query)

 数据库(database connections)

 导出内容

导出接口

dashboard GET api/v1/dashboard/export/?q=!(dashboard_id)&token=GMsud-wrK
charts GET api/v1/chart/export/?q=!(slice_id)&token=N0PFreRTn
datasets GET api/v1/dataset/export/?q=!(datasource_id)&token=s1GBGju-l
saved_queries GET api/v1/saved_query/export/?q=!(sql_id)&token=2DDFzvjzF
databases GET api/v1/database/export/?q=!(database_id)&token=F45_CB_DB

导入接口

dashboard POST api/v1/dashboard/import
charts POST api/v1/chart/import
datasets POST api/v1/dataset/import
saved_queries POST api/v1/saved_query/import
databases POST /api/v1/database/import/

 源码解读部分

  • Dashboards 导入核心逻辑

superset/dashboards/api.py

    command = ImportDashboardsCommand()

         superset/dashboards/commands/importers/dispatcher.py

             command_versions = [
                   v1.ImportDashboardsCommand,
                   v0.ImportDashboardsCommand,
              ]

                      superset/dashboards/commands/importers/v1/__init__.py

@staticmethod
    def _import(
        session: Session, configs: dict[str, Any], overwrite: bool = False
    ) -> None:
        # discover charts and datasets associated with dashboards
    '''
        1. 发现与仪表板关联的图表和数据集
        初始化集合chart_uuids和dataset_uuids,用于存储与仪表板相关联的图表和数据集的UUID。
        遍历配置项,对于每个以"dashboards/"开头的文件名,
            通过find_chart_uuids函数从仪表板的位置信息中提取图表UUID,
            并通过find_native_filter_datasets函数从元数据中提取数据集UUID。
    '''
        chart_uuids: set[str] = set()
        dataset_uuids: set[str] = set()
        for file_name, config in configs.items():
            if file_name.startswith("dashboards/"):
                chart_uuids.update(find_chart_uuids(config["position"]))
                dataset_uuids.update(
                    find_native_filter_datasets(config.get("metadata", {}))
                )
 
        # discover datasets associated with charts
    '''
        2. 发现图表关联的数据集
        继续遍历配置项,对于每个以"charts/"开头且UUID在chart_uuids集合中的配置项,提取其数据集UUID,并添加到dataset_uuids集合中。
    '''
        for file_name, config in configs.items():
            if file_name.startswith("charts/") and config["uuid"] in chart_uuids:
                dataset_uuids.add(config["dataset_uuid"])
 
        # discover databases associated with datasets
    '''
        3. 发现数据集关联的数据库
        再次遍历配置项,对于每个以"datasets/"开头且UUID在dataset_uuids集合中的配置项,提取其数据库UUID,并添加到集合database_uuids。
    '''
        dat

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1865798.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为什么需要对数据质量问题进行根因分析?根因分析该怎么做?

在当今的商业环境中,数据已成为企业决策的核心。然而,数据的价值高度依赖于其质量。低质量的数据不仅会降低分析的准确性,还可能导致错误的决策,从而影响企业的竞争力和市场表现。因此,识别和解决数据质量问题是数据管…

定制汽车霍尔传感器应用及特点

霍尔传感器定制概览 霍尔传感器是一种广泛应用于汽车领域的磁性传感器,其工作原理基于霍尔效应,能够将磁场的变化转换为电信号输出。在汽车行业中,霍尔传感器因其高精度、稳定性和无接触式测量的特点而被广泛应用于发动机控制、自动变速控制…

推荐5款学习工作效率工具

Online AudioConvert Online AudioConvert 是一个在线音频格式转换工具,支持多种音频和视频文件格式的转换。用户可以将音频文件从一种格式转换为另一种格式,例如从 MP3 转换为 WAV 或从视频中提取音频。该工具无需注册、安装或文件大小限制,…

华为交换机的堆叠-Stack配置(基于业务口普通线缆的堆叠配置)

不想看原理请跳过一、二、三、四, 直接到配置五,干完活有时间在慢慢看原理。 一、什么是堆叠-Stack 指将多台交换机通过堆叠线缆连接在一起,逻辑上变成一台交换设备,作为一个整体参与数据转发。即:1 1 一 二、堆叠…

腾讯地图撒点并默认显示点位信息

实现步骤如下: 1、注册腾讯位置服务账号并获取 Key 2、需要创建一个地图容器,并使用腾讯地图的 API 初始化地图。通常涉及到设置地图的中心点、缩放级别和地图样式。 map new TMap.Map(document.getElementById(‘container’), { center: center, zo…

字符串匹配 --- BF算法 KMP算法

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏: 算法Journey 本篇博客我们将介绍关于字符串匹配的BF算法以及KMP算法,请放心食用~ 🏠 字符串匹配 假设有一个字符串为主串str&#x…

【大模型】大模型微调方法总结(三)

1. Prefix-tuning 1.背景 2021年论文《Prefix-Tuning: Optimizing Continuous Prompts for Generation》中提出了 Prefix Tuning 方法。与Full-finetuning 更新所有参数的方式不同,该方法是在输入 token 之前构造一段任务相关的 virtual tokens 作为 Prefix&#x…

【数据结构】带头双向循环链表的实现及链表顺序表的区别

目录 一、带头双向循环链表接口实现 连接关系: 创建哨兵位(表头): 头插——头删: 尾插——尾删: 查找——打印: 指定位置pos前插入,删除pos位置: 链表销毁&#x…

springboot解析自定义yml文件

背景 公司产品微服务架构下有十几个模块,几乎大部分模块都要连接redis。每次在客户那里部署应用,都要改十几遍配置,太痛苦了。当然可以用nacos配置中心的功能,配置公共参数。不过我是喜欢在应用级别上解决问题,因为并不…

“管式加热炉简单控制系统和串级控制系统设计与Matlab仿真”,高分资源,匠心制作,下载可用。强烈推荐!!!

“管式加热炉简单控制系统和串级控制系统设计与Matlab仿真”毕业设计,高分资源,匠心制作,下载可用。强烈推荐!!! 1.控制目标 加热炉的任务是把原油加热到一定温度,以保证下道工艺的顺利进行。…

【C语言】解决C语言报错:Double Free

文章目录 简介什么是Double FreeDouble Free的常见原因如何检测和调试Double Free解决Double Free的最佳实践详细实例解析示例1:重复调用free函数示例2:多次释放全局变量指针示例3:函数间传递和释放指针 进一步阅读和参考资料总结 简介 Doub…

基于redisson实现tomcat集群session共享

目录 1、环境 2、修改server.xml 3、修改context.xml 4、新增redisson配置文件 5、下载并复制2个Jar包到Tomcat Lib目录中 6、 安装redis 7、配置nginx负载均衡 8、配置测试页面 9、session共享测试验证 前言: 上篇中,Tomcat session复制及ses…

关于等保测评你了解多少?

在当今数字化时代,网络安全问题愈发凸显其重要性。作为保障信息系统安全的关键环节,等保测评(网络安全等级保护测评)成为了企业和组织不可或缺的一部分。那么,关于等保测评,我们究竟了解多少呢?…

基于STM32的智能家庭安防系统

目录 引言环境准备智能家庭安防系统基础代码实现:实现智能家庭安防系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统实现4.4 用户界面与数据可视化应用场景:家庭安防管理与优化问题解决方案与优化收尾与总结 1. 引言 智能家庭安防系统通过使用ST…

鸿蒙系统最简单安装谷歌服务及软件的方法

哈喽,各位小伙伴们好,我是给大家带来各类黑科技与前沿资讯的小武。 近日,华为开发者大会在东莞松山湖召开,发布了盘古大模型5.0和纯血版的鸿蒙 HarmonyOS NEXT 全场景智能操作系统,而根据研究机构 Counterpoint Resea…

MySQL进阶_3.MySQL日志

文章目录 第一节、MySQL事务日志1.1、redo日志1.1.1、为什么需要REDO日志1.1.2、REDO日志的好处、特点1.1.3、redo的组成1.1.4、redo的整体流程 1.2、Undo日志1.2.1、如何理解Undo日志1.2.2、Undo日志的作用1.2.3、undo log的生命周期 第一节、MySQL事务日志 事务有4种特性&am…

按位与、或、异或操作符

目录 & --- 按位与操作符 按位与操作符运用规则 按位与操作符相关代码 按位与操作符相关代码验证 | --- 按位或操作符 按位或操作符运用规则 按位或操作符相关代码 按位或操作符相关代码验证 ^ --- 按位异或操作符 按位异或操作符运用规则 按位异或操作符相关代…

24/06/26(1.1129)动态内存

strtok 字符串分割函数 #include<stdio.h> int main(){ char str[] "this,a sample string."; char* sep ","; char* pch strtok(str, sep); printf("%s\n", pch); while (pch ! NULL){ printf("%s\…

LabVIEW中卡尔曼滤波的作用与意义

卡尔曼滤波&#xff08;Kalman Filter&#xff09;是一种在控制系统和信号处理领域广泛应用的递推滤波算法&#xff0c;能够在噪声环境下对动态系统的状态进行最优估计。其广泛应用于导航、目标跟踪、图像处理、经济预测等多个领域。本文将详细介绍卡尔曼滤波在LabVIEW中的作用…

[JS]对象

介绍 对象是一种无序的数据集合, 可以详细的描述某个事物 事物的特征在对象中用属性来表示, 事物的行为在对象中用方法来表示 使用 创建对象 let 对象名 {属性名&#xff1a;值&#xff0c;方法名&#xff1a;函数&#xff0c; } let 对象名 new Object(); 对象名.属性…