datahub-摄取自助分析平台superset元数据(含数据血缘)

目录

摄取元数据

Ingestion界面添加新数据源-》选择superset

配置yml文件

执行成功后,首页显示

进入charts,可显示superset平台元数据

查看数据数据血缘

数据血缘写入


摄取元数据

Ingestion界面添加新数据源-》选择superset

配置yml文件

source:
    type: superset
    config:
        connect_uri: 'http://xx.xx.xx.xx:8080'
        username: xxxx
        password: xxx
sink:
    type: datahub-rest
    config:
        server: 'localhost:8080'

执行成功后,首页显示

进入charts,可显示superset平台元数据

查看数据数据血缘

发现数据血缘只显示charts->dashboard的血缘,并未显示dataset->charts血缘

数据血缘写入

直连superset后台数据库,将数据血缘写入datahub,循环遍历所有charts,获取其dataset数据集和charts(探索这个charts urn的name填什么真是测试的要疯。。。。翻烂了superset数据库和datahub存的内容, 试了所有的可能性,中文名,urn:li:charts....,然后最后看的源码又尝试,最后终于成了,官方文档给的真的写不进去啊)

from typing import List

import datahub.emitter.mce_builder as builder
from datahub.emitter.mcp import MetadataChangeProposalWrapper
from datahub.emitter.rest_emitter import DatahubRestEmitter
from datahub.metadata.com.linkedin.pegasus2avro.chart import ChartInfoClass
from datahub.metadata.schema_classes import ChangeAuditStampsClass
import pandas as pd
import pymysql
import json
import pandas as pd

# 连接 MySQL 数据库
conns = pymysql.connect(
    host='10.xx.xx.xxx',  # 主机名
    port=3306,         # 端口号,MySQL默认为3306
    user='xxx',       # 用户名
    password='xxx', # 密码
    database='superset',   # 数据库名称
)
# 创建游标对象
cursors = conns.cursor()

# 执行 SQL 查询语句
cursors.execute("select * from slices  ")

# 获取查询结果
resultsql = cursors.fetchall()




# 将查询结果转化为 Pandas dataframe 对象
df = pd.DataFrame(resultsql, columns=[i[0] for i in cursors.description])
df

for i in range(len(df)):
    slice_id=df.loc[i,'id']
    slice_name=df.loc[i,'slice_name']
    datasource_name=df.loc[i,'datasource_name']
    schema_perm=df.loc[i,'schema_perm']
    platforms=schema_perm.split('.')[0].replace('[','').replace(']','').lower()
    database=schema_perm.split('.')[1].replace('[','').replace(']','').lower()
    if platforms.find('-')>=0:
        database=platforms.split('-')[1].capitalize()
        platforms=platforms.split('-')[0].lower()
        
        ds=platforms+'.'+database
        datasource_name=ds+'.'+datasource_name
    print(platforms,datasource_name)

    input_datasets: List[str] = [
        builder.make_dataset_urn(platform=platforms, name=datasource_name, env="PROD"),

    ]

    last_modified = ChangeAuditStampsClass()

    chart_info = ChartInfoClass(
        title=slice_name,
        description="",
        lastModified=last_modified,
        inputs=input_datasets,
        chartUrl="http://superset_url:8080/explore/?slice_id="+str(slice_id)
    )

    # 
    # Construct a MetadataChangeProposalWrapper object with the ChartInfo aspect.
    # NOTE: This will overwrite all of the existing chartInfo aspect information associated with this chart.
    chart_info_mcp = MetadataChangeProposalWrapper(
        entityUrn=builder.make_chart_urn(platform="superset", name=slice_id),
        aspect=chart_info,
    )

    # Create an emitter to the GMS REST API.
    emitter = DatahubRestEmitter("http://localhost:8080")

    # Emit metadata!
    emitter.emit_mcp(chart_info_mcp)
    

将以上py文件,放入datahub服务器,调用脚本即可写入。

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值