Tabla YQL para registros de acceso de Apache
Pregunta
YQL SHOW TABLES tiene CSV y HTML . ¿Qué pasa con una tabla para registros de acceso de Apache?
Solución
Ahora hay una tabla de expresiones regulares
Si tiene una expresión regular para su formato de registro, puede usar esa tabla para analizarla.
Otros consejos
Los registros de Apache en realidad tienen un formato personalizable, así que supongo que se refiere al formato de registro común o uno de los valores predeterminados. Si agregamos algo como esto, probablemente será con un lector de línea basado en expresiones regulares que luego podría aplicar a los registros de apache. Gracias por la sugerencia.
Aquí está el comienzo de una tabla de análisis de registro común. El código tal como está se dividirá ciegamente en espacios vacíos, lo que no es exacto, pero es un comienzo. Probablemente desee pasar la url del archivo de registro, dividir las entradas en la nueva línea y luego analizar cada línea.
<?xml version="1.0" encoding="UTF-8"?>
<table xmlns="http://query.yahooapis.com/v1/schema/table.xsd">
<meta>
<author></author>
<sampleQuery>select * from {table}</sampleQuery>
</meta>
<bindings>
<select itemPath="" produces="XML">
<inputs>
<key id="url" type="xs:string" paramType="variable"/>
</inputs>
<execute><![CDATA[
//http://en.wikipedia.org/wiki/Common_Log_Format
var entry = '208.240.243.170 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326';
var names = ['IP', 'RFC 1413', 'userid', 'date', 'request', 'status', 'size'];
var values = entry.split(' ');
var resp = {};
for (var i in names) {
var name = names[i];
resp[name] = values[i];
}
response.object = resp;
]]></execute>
</select>
</bindings>
</table>
Puedes ejecutarlo así: use " http: // {su dominio} /table.xml" como mesa; seleccione * de la tabla
Luego, puede ampliar la búsqueda de datos geográficos por ip: use " http: // {su dominio} /table.xml" como mesa; seleccione * de pidgets.geoip donde ip in (seleccione IP de la tabla)