Apache Superset将为每个图表查询数据集。在每次数据集使用时,都会进行一次新的查询,以获取最新的数据。这是确保数据集的基础数据始终与数据源同步的方法。
以下是查询数据集示例代码:
from superset import db
from superset.models.slice import Slice
from superset.models.datasource import (
DataSource,
Table,
DruidDatasource
)
# 创建数据源对象
table = Table(table_name="sales", schema="demo")
# 装配查询对象
query_obj = (
db.session.query(Slice, DataSource, Table)
.join(Table, Slice.datasource_id == Table.id)
.join(DataSource, Slice.datasource_id == DataSource.id)
.filter(Table.table_name == table.table_name)
.filter(Table.schema == table.schema)
.all()
)
# 遍历结果,逐个查询数据集
for slice in query_obj:
print("Querying dataset for chart {}".format(slice.Slice.slice_name))
print(slice.datasource.query(engine=database.engine, datasource_name=slice.datasource.name))