Klinオープンソース可視化ツールsuperset使用


superset+kylin
1.supersetとkylin接続問題はkylinpy pip install kylinpyを使用する.
Klin.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 view/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.285.6
NVD 3 Dual Line eViz 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/