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

本文涉及的产品
对象存储 OSS,20GB 3个月
阿里云盘企业版 CDE,企业版用户数5人 500GB空间
云备份 Cloud Backup,100GB 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模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
1月前
|
数据采集 存储 JavaScript
自动化数据处理:使用Selenium与Excel打造的数据爬取管道
本文介绍了一种使用Selenium和Excel结合代理IP技术从WIPO品牌数据库(branddb.wipo.int)自动化爬取专利信息的方法。通过Selenium模拟用户操作,处理JavaScript动态加载页面,利用代理IP避免IP封禁,确保数据爬取稳定性和隐私性。爬取的数据将存储在Excel中,便于后续分析。此外,文章还详细介绍了Selenium的基本设置、代理IP配置及使用技巧,并探讨了未来可能采用的更多防反爬策略,以提升爬虫效率和稳定性。
|
1月前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
46 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
17天前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
25 4
|
21天前
|
JavaScript 前端开发 数据处理
Vue导出el-table表格为Excel文件的两种方式
Vue导出el-table表格为Excel文件的两种方式
|
1月前
|
easyexcel Java UED
SpringBoot中大量数据导出方案:使用EasyExcel并行导出多个excel文件并压缩zip后下载
在SpringBoot环境中,为了优化大量数据的Excel导出体验,可采用异步方式处理。具体做法是将数据拆分后利用`CompletableFuture`与`ThreadPoolTaskExecutor`并行导出,并使用EasyExcel生成多个Excel文件,最终将其压缩成ZIP文件供下载。此方案提升了导出效率,改善了用户体验。代码示例展示了如何实现这一过程,包括多线程处理、模板导出及资源清理等关键步骤。
|
30天前
|
前端开发 JavaScript API
前端基于XLSX实现数据导出到Excel表格,以及提示“文件已经被损坏,无法打开”的解决方法
前端基于XLSX实现数据导出到Excel表格,以及提示“文件已经被损坏,无法打开”的解决方法
124 0
|
11天前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
117 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
1月前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
218 3
|
1月前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1627 14
|
1月前
|
Python
log日志学习
【10月更文挑战第9天】 python处理log打印模块log的使用和介绍
30 0

相关产品

  • 日志服务