日志服务IPython/Jupyter扩展实战:下载数据为Excel文件

本文涉及的产品
对象存储 OSS,20GB 3个月
日志服务 SLS,月写入数据量 50GB 1个月
文件存储 NAS,50GB 3个月
简介: 想要将日志服务的日志下载并保存为Excel或者CSV格式,并且自动处理字段不一致的情况的话,该怎么办?通过使用日志服务IPython/Jupyter扩展,轻松做到这点。

问题

日志服务的数据并不要求统一格式,每条日志可以有不同的关键字集合,例如:

{"city": "123", "province": "vvv"}
{"city": "shanghai", "pop": "2000"}
{"name": "xiao ming", "home": "shanghai"}

因此一般使用日志服务的CLI下载的命令get_log_all或者pull_log_dump时,格式都是单行JSON格式以保证灵活性。

但是大部分情况下,一个日志库的所有日志的关键字集合总体是稳定的;另一方面,Excel格式(或者更简单的CSV格式)相对JSON更加商业应用和人类操作友好一些。

如果期望下载下来时是Excel或者CSV格式,并且自动处理字段不一致的情况的话,该怎么办?

本文通过使用日志服务IPython/Jupyter扩展,轻松做到这点。

前提

安装日志服务扩展

首先,参考文章日志服务IPythonIPython/Jupyter扩展完成安装(IPython Shell、IPython/Jupyter Notebook或者Jupyter Lab均可)

安装Excel相关组件

在IPython所在环境中安装Excel读写的相关组件:

pip install openpyxl xlrd xlwt XlsxWriter
  • openpyxl - 用于Excel 2010 xlsx/xlsm文件的读写
  • xlrd - 读取Exce (xls格式)
  • xlwt - 写Excel (xls格式)
  • XlsxWriter - 写Excel (xlsx)文件

配置

使用%manage_log配置好链接日志服务的相关入口、秘钥、项目和日志库等。具体参考这里

场景

1. 将结果保存到Excel中

通过查询命令%%log查询得到Pandas Dataframe,然后调用to_excel即可。

样例:

%%log -1day ~ now
* | select date_format(date_trunc('hour', __time__), '%H:%i') as dt,
        count(1)%100 as pv,
        round(sum(if(status < 400, 1, 0))*100.0/count(1), 1) AS ratio
        group by date_trunc('hour', __time__)
        order by dt limit 1000
df1 = log_df
df1.to_excel('output.xlsx')

2. 将结果保存到Excel多个Sheet中

通过%log%%log获得多个数据存在不同的Dataframe中后,如下样例操作:

import pandas as pd
writer = pd.ExcelWriter('output2.xlsx') 

df1.to_excel(writer, sheet_name='data1')
df2.to_excel(writer, sheet_name='data2')

writer.save()

3. 定制Excel细节格式

Pandas默认使用Xlwt模块xls文件、使用Openpyxl模块xlsx文件。而使用XlsxWriterxlsx功能更加全面灵活,但需要如下配置。

例如上面例子中的ExcelWriter构造时,增加参数即可:

writer = pd.ExcelWriter('output2.xlsx', engine='xlsxwriter') 

可以定制特定列的格式、样式、甚至直接画Excel图表。具体推荐参考这篇文章

4. 其他格式

Pandas DataFrame还可以保存其他格式,例如csvhtml等,可以进一步参考这里

进一步参考

相关实践学习
日志服务之数据清洗与入湖
本教程介绍如何使用日志服务接入NGINX模拟数据,通过数据加工对数据进行清洗并归档至OSS中进行存储。
目录
相关文章
|
11天前
|
数据安全/隐私保护
杨老师课堂之Excel VBA 程序开发第七讲表格数据高亮显示
杨老师课堂之Excel VBA 程序开发第七讲表格数据高亮显示
15 1
|
11天前
|
Java 数据库 数据安全/隐私保护
Java操作Excel文件导入导出【内含有 jxl.jar 】
Java操作Excel文件导入导出【内含有 jxl.jar 】
22 0
|
2天前
|
监控 数据库
neo4j数据插入操作有日志吗
【6月更文挑战第29天】neo4j数据插入操作有日志吗
12 1
|
7天前
|
存储 数据挖掘 Python
使用Python集合高效统计Excel数据
使用Python集合高效统计Excel数据
23 7
VBA如何用Excel数据批量生成Word文档
VBA|用Excel数据批量生成并修改用模板创建的Word文档
|
11天前
|
数据安全/隐私保护
杨老师课堂之Excel VBA 程序开发第六讲 根据制定列创建相应工作表及数据
杨老师课堂之Excel VBA 程序开发第六讲 根据制定列创建相应工作表及数据
12 1
|
12天前
|
easyexcel Java API
SpringBoot集成EasyExcel 3.x:高效实现Excel数据的优雅导入与导出
SpringBoot集成EasyExcel 3.x:高效实现Excel数据的优雅导入与导出
37 1
|
4天前
|
easyexcel Java API
Apache POI与easyExcel:Excel文件导入导出的技术深度分析
Apache POI与easyExcel:Excel文件导入导出的技术深度分析
|
2月前
|
前端开发 Java
基于Java爬取微博数据(二) 正文长文本+导出数据Excel
【5月更文挑战第12天】基于Java爬取微博数据,正文长文本+导出数据Excel
|
2月前
|
Java
java导出复杂excel
java导出复杂excel

相关产品

  • 日志服务