superset csv 导出相关问题

文章目录

  • superset csv 导出相关问题 记录
    • 1、csv 导出中文乱码问题
    • 2、导出csv格式 表头取 列的别名
    • 3、sqllab查询结果 导出csv,会报错误

superset csv 导出相关问题 记录

1、csv 导出中文乱码问题

修改config配置 改为使用utf-8-sig编码

2、导出csv格式 表头取 列的别名

修改 superset/viz.py 中 get_csv 函数

    def get_csv(self):
        df = self.get_df()
        # 导出csv 替换成 数据源中的label
        columns = list(df.columns)
        verbose_map = self.datasource.data.get('verbose_map', {})
        df.columns = [verbose_map.get(c, c) for c in columns]
        include_index = not isinstance(df.index, pd.RangeIndex)
        return df.to_csv(index=include_index, **config["CSV_EXPORT"])

3、sqllab查询结果 导出csv,会报错误

报错:

UnicodeEncodeError: ‘latin-1’ codec can’t encode characters in position 9-13: ordinal not in range(256)

原因:查询tab的名字中包含中文

解决:
修改superset/views/core.py 中 def csv(self, client_id):函数

修改编码

       response.headers[
           "Content-Disposition"
       ] = f"attachment; filename={query.name}.csv".encode('utf-8')

你可能感兴趣的:(superset)