自定义数据源

smartchart已实现大部分常用的数据源连接, 对于其它的, 您也可以使用python数据源进行处理 但是使用python数据源有一定的缺陷, 需要在dataset上写python代码, 不能复用 对于一些带连接信息的还需要重复写入 所以你还可以使用自定义数据源

应用场景 #

  • 未内置的数据源, 如需要使用sparkSQL, ES等
  • 标准处理满足不了要求, 需要对数据进行预处理的情况
  • 需要刷新时触发预警等自定义动作
  • 需要自定义写入方法, 个性化查询需求, 甚至是实时爬取数据

使用方法 #

  • 首先你需要新建一个python脚本文件, 如diy_conn.py
  • 复制以下代码到这个文件, 然后编写你的自定义查询方法
def dataset(*args, **kwargs):
    """
    返回查询数据集
    :return: 二维数组或JSON字典
    """
    sqlList = args[0]   # 数据集编辑界面的输入已按分号拆分成数组 [sql1, sql2...]
    config = args[1]    # 数据连接界面的配置{'host','port','user','password','db'}
    input = sqlList[0]  # 数据集界面的输入
    host = config['host']
    user = config['user']
    password = config['password']
    # 插入你的数据查询及处理代码, 生成result即可
    result = [[]]

    return result

def insert_dataset(*args, **kwargs):
    """
    数据填表实现
    """
    contents = args[0]  # 传入的数据集二维数组格式
    table = args[1]   # 配置中的表名
    config = args[3]  # 相关的配置字典{'host','port','user','password','db'}
    # 插入你的写入数据逻辑代码
  • 在任意的仪表盘开发界面中 “模板” –> 点击上传图标, 将这个python文件上传即可 输入图片说明

  • 新建数据源, 驱动填写之前上传过的文件名, 比如我们这个是diy_conn, 其它参数按照你自定义的需求填写, 会自动传入你的自定义函数,之后你可以正常使用这个自定义数据源了 输入图片说明

案例 #

比如对于开启了SSL认证的mysql,我们需要改写一个自定义数据源,取名mysql_ssl.py

from smart_chart.common.connect_db import _O00OO00000O00O00O as cur_execute
import pymysql
def dataset(*args, **kwargs):
    """
    返回查询数据集
    :return: 二维数组或JSON字典
    """
    sqlList = args[0] 
    config = args[1]
    host = config['host']
    user = config['user']
    password = config['password']
    # 插入你的数据查询及处理代码, 生成result即可
    conn = pymysql.connect(
        user=user,
        password=password,
        host=host,
        database=config['db'],
        port=int(config['port']),
        charset='utf8',
        ssl={"fake_flag_to_enable_tls":True}
    )
    try:
        result = cur_execute(conn, sqlList)
    except Exception as e:
        raise e
    finally:
        conn.close()
    return result

如果你对python不熟悉, 也可咨询客服按需定制, 你只需上传即可使用