Power Query / Excel 2016具有从Azure存储等位置提取数据的强大功能,甚至可以将blob文件扩展为文本数据行。但IIS日志文件并不容易解析(例如有头记录和注释)所以我想使用像Log Parser这样的其他东西进行解析并将带有iis日志的blob转换为带列的数据行我可以过滤和转动等等。我将如何进行此操作,或者是否有任何我可以使用的库已经完成了?
答案 0 :(得分:2)
我实际上想到的另一个解决方案是Power Query,用于分析IIS日志:Azure Log Analytics - https://azure.microsoft.com/fr-fr/services/log-analytics/ 它功能更强大,并且具有IIS日志的本机处理功能。
答案 1 :(得分:1)
Power Query可以读取任何二进制日志格式......如果您编写代码来定义二进制格式。
M库参考http://pqreference.azurewebsites.net/PowerQueryFormulaReferenceAugust2015.pdf中有关如何使用BinaryFormat
库的示例:
17.1示例考虑一种假设的文件格式,其中包含一个32位无符号整数,后跟该点数。每个点
是由两个16位有符号整数值(x和y)组成的记录。 文件中的所有整数都使用Big Endian字节顺序。在观看时 十六进制,示例文件可能如下所示:
00 00 00 02 // number of points (2) 00 03 00 04 // point (x=3, y=4) 00 05 00 06 // point (x=5, y=6)
可以使用二进制格式函数读取此文件格式,如 如下:
let fileContents = #binary({ 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06 }), pointFormat = BinaryFormat.Record([ x = BinaryFormat.SignedInteger16, y = BinaryFormat.SignedInteger16 ]), fileFormat = BinaryFormat.Choice( BinaryFormat.UnsignedInteger32, (count) => BinaryFormat.List(pointFormat, count)) in fileFormat(fileContents) // { // [x = 3, y = 4], // [x = 5, y = 6] // }
您可能同意使用自定义构建的库会更好。
答案 2 :(得分:1)
如果您没有使用Azure或其他付费日志分析服务,可以尝试使用PowerBI桌面仪表板进行IIS日志分析。我们可以使用LogParser将IIS日志转换为CSV,然后加载到PowerBI。可以在下面找到更多详细信息。
答案 3 :(得分:0)
好的,这是您可能期望的答案:Azure数据工厂(https://azure.microsoft.com/en-us/documentation/services/data-factory/)是云中的强大ETL。您将能够以非常简单的方式将Azure日志从Azure存储转换为您自己的Azure存储表格式。然后,您可以直接从Power Query轻松访问表。
答案 4 :(得分:0)
IIS日志对Power Query来说并不是一个太大的挑战。我的方法是将IIS日志文件作为单个文本列加载(PQ往往希望自动为您分割)。将生成的Source步骤编辑为以下内容:
= Csv.Document(File.Contents("C:\inetpub\logs\LogFiles\W3SVC1\u_ex160523.log"),[Encoding=1252, QuoteStyle=QuoteStyle.None])
从那里我将删除前3个标题行,将“#Fields:”替换为无任何删除,然后按空格拆分并使用第一行作为标题。
进一步过滤以消除任何进一步的标题行,你可能就在那里。