superset 使用存储过程返回的结果作为数据源出图标
时间: 2023-06-29 22:05:57 浏览: 61
Superset支持使用存储过程作为数据源,但是需要注意的是,存储过程返回的结果必须符合Superset的数据源要求,即必须是类似于表格的结构,并且每列必须有一个唯一的列名。如果存储过程返回的结果不符合要求,Superset将无法正确地解析数据。
在Superset中,您可以使用SQLAlchemy来连接和查询数据库,并使用查询结果来生成图表。如果您希望使用存储过程作为数据源,您可以使用SQLAlchemy的execute()函数来执行存储过程并获取结果。然后,您可以将结果转换为Pandas数据帧,并将其用作Superset中的数据源。
以下是一个示例代码片段,演示如何使用存储过程作为Superset的数据源:
```
from sqlalchemy import create_engine
import pandas as pd
# 创建数据库连接
engine = create_engine('your_database_connection_string')
# 执行存储过程并获取结果
result = engine.execute('CALL your_stored_procedure()').fetchall()
# 将结果转换为Pandas数据帧
df = pd.DataFrame(result, columns=['column1', 'column2', 'column3'])
# 将数据帧用作Superset的数据源
from superset import db
from superset.models.core import Database
from superset.models.slice import Slice
from superset.views.utils import SliceQuery
database = db.session.query(Database).filter_by(database_name='your_database_name').one()
slice = Slice(
slice_name='your_slice_name',
viz_type='your_viz_type',
datasource_type='table',
datasource_id=database.id,
params={},
description='',
)
db.session.add(slice)
db.session.commit()
slicequery = SliceQuery(
slice_id=slice.id,
database_id=database.id,
datasource_type='table',
datasource_id=database.id,
groupby=['column1'],
metrics=['column2'],
row_limit=100,
)
df = slicequery.query_df()
```
在这个示例中,我们首先使用SQLAlchemy执行存储过程,并获取结果。然后,我们将结果转换为Pandas数据帧,并将其用作Superset的数据源。最后,我们创建了一个新的Superset切片,并使用SliceQuery查询了数据帧中的数据。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)