superset + kylin
1.superset 和kylin 连接问题
使用kylinpy
pip install kylinpy
在kylin.py 增加解决下拉列表问题
@compact_response()
def list_schemas(self):
table_schemas = [t['table_SCHEM'] for t in self.tables_and_columns()['data']]
table_schemas = list(set(table_schemas))
return table_schemas
在sqla_dialect 中增加
def get_schema_names(self, connection, schema=None, **kw):
conn = connection.connect()
return conn.connection.connection.list_schemas().get('data')
2.导出字符编码问题
CSV_EXPORT = {
'encoding': 'utf-8-sig',
}
vim views/core.py
response = Response(csv.encode('utf-8-sig'), mimetype='text/csv')
3.测试连接是报错可以是编码问题
修改 kylin.py 中
dumps = json.loads(fd.read().decode("utf-8"))
4.superset 中中文地图问题
./static/assets/visualizations/countries/china.geojson
修改 NAME_1 为中文省名
修改 ISO 对应与sql中的省名称标示
4 superset 0.25.6
NVD3DualLineViz
unhashable type: ‘dict’
vim viz.py
def to_series(self, df, classed=''):
cols = []
for col in df.columns:
if col == '':
cols.append('N/A')
elif col is None:
cols.append('NULL')
else:
cols.append(col)
df.columns = cols
series = df.to_dict('series')
chart_data = []
metric = self.form_data.get('metric')
metric_2 = self.form_data.get('metric_2')
if isinstance(metric, dict):
metric = str(metric['label'])
else:
metric = metric
metrics = [
metric,
metric_2,
]
def get_data(self, df):
fd = self.form_data
df = df.fillna(0)
if self.form_data.get('granularity') == 'all':
raise Exception(_('Pick a time granularity for your time series'))
metric = fd.get('metric')
if isinstance(metric, dict):
metric = str(metric['label'])
else:
metric = metric
metric_2 = fd.get('metric_2')
df = df.pivot_table(
index=DTTM_ALIAS,
values=[metric, metric_2])
chart_data = self.to_series(df)
return chart_data
```
[1] : http://kylin.apache.org/
[2] : http://superset.apache.org/