Ich habe gesucht und kann nicht viel zu diesem Thema finden (vielleicht schlechte Suchbegriffe :). Ich habe eine Tabelle, Protopayload.resource, die Apache-Protokollierungsinformationen erhält. Daher enthält das Feld, an dem ich interessiert bin, mehrere Werte, nach denen ich suchen muss. Das Feld ist in einem PHP-URL-Stil formatiert. heißtAufteilen eines Feldes in große Abfrage
/?id=13242134123&ver=12&os_bits=64&os_type=mac&lng=EN
Dies macht alle Suchvorgänge mit wirklich langen Regexes Daten zu erhalten landen. Fügen Sie dann Anweisungen hinzu, um Daten zu kombinieren.
Beispiel Suche mac kombinieren/win Statistiken
SELECT
t1.date, t1.wincount, COALESCE(t2.maccount, 0) AS maccount
FROM (
SELECT
DATE(metadata.timestamp) AS date,
INTEGER(COUNT(protoPayload.resource)) AS wincount
FROM (TABLE_DATE_RANGE(tablename, DATE_ADD(CURRENT_TIMESTAMP(), -30, 'DAY'), CURRENT_TIMESTAMP()))
WHERE
(REGEXP_MATCH(protoPayload.resource, r'ver=[11,12'))
AND protoPayload.resource CONTAINS 'os=win' GROUP BY date) t1
LEFT JOIN (
SELECT
DATE(metadata.timestamp) AS date,
INTEGER(COUNT(protoPayload.resource)) AS maccount
FROM (TABLE_DATE_RANGE(tablename, DATE_ADD(CURRENT_TIMESTAMP(), -30, 'DAY'), CURRENT_TIMESTAMP()))
WHERE
(REGEXP_MATCH(protoPayload.resource, r'cv=[p,m][17,16,15,14]'))
AND protoPayload.resource CONTAINS 'os=mac' GROUP BY date) t2
ON
t1.date = t2.date
ORDER BY t1.date
Was war ich dachte Suche ähnliche Regex zu verwenden. Erstellen Sie eine neue Tabelle. Speichern Sie die Daten anschließend in einer neuen Tabelle mit Beziehungsfeldern. Korrigieren Sie die zukünftige Protokollierung, damit sie ordnungsgemäß in der Tabelle protokolliert wird.
Meine Fragen sind diese gültige Lösung oder gibt es eine viel einfachere Möglichkeit, dies in Google BigQuery zu erreichen? Gibt es eine bessere Möglichkeit, die Daten zu transformieren? Nochmals vielen Dank für die Eingabe!
Willkommen zu StackOverflow! Ihre Frage ist also, ob Google BigQuery eine einfache Möglichkeit zum Parsen von URLs bietet? Ich bin kein GBQ-Experte, aber im Allgemeinen würde ich sagen, dass Ihre Vorgehensweise in Ordnung ist. Das heißt, ich denke, dass Sie eher eine Antwort bekommen, wenn Sie eine Alternative anbieten und Ihre Frage wie "Welches ist besser: a oder b?" – akousmata