kylin 开源可视化工具 superset使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bigdataf/article/details/79768932

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/

猜你喜欢

转载自blog.csdn.net/bigdataf/article/details/79768932