Vergleich von Werten in zwei Spalten von zwei verschiedenen Splunk-Suche
Ich bin neu in splunk und mit Blick auf ein Problem im Vergleich von Werten in zwei Spalten von zwei unterschiedlichen Abfragen.
Abfrage 1
index="abc_ndx" source="*/jkdhgsdjk.log" call_id="**" A_to="**" A_from="**" | transaction call_id keepevicted=true | search "xyz event:" | table _time, call_id, A_from, A_to | rename call_id as Call_id, A_from as From, A_to as To
Abfrage 2
index="abc_ndx" source="*/jkdhgsdjk.log" call_id="**" B_to="**" B_from="**" | transaction call_id keepevicted=true | search " xyz event:"| table _time, call_id, B_from, B_to | rename call_id as Call_id, B_from as From, B_to as To
Diese sind meiner zwei unterschiedliche Abfragen. Ich will vergleichen die einzelnen Werte in A_from
Spalte mit den einzelnen Werten in B_from
Spalte und wenn der Wert übereinstimmt, dann zeigt die Werte der A_from
.
Ist es möglich?
Habe ich die beiden Abfragen getrennt und exportiert die Ergebnisse ins csv und verwendet vlookup
Funktion. Aber das problem ist, es ist eine limit von max 10000 Zeilen der Daten, die exportiert werden können und so verpasse ich viele Daten wie meiner Daten Suche hat mehr als 10000 Datensätzen.
Keine Hilfe?
InformationsquelleAutor user2267886 | 2013-04-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben keine Daten, um dies zu testen im moment, aber die folgenden sollten Sie in die richtige Richtung.
Wenn Sie die Tabelle für die erste Abfrage aussortiert, Sie sollte "Rohr" die Suchzeichenfolge ein
appendcols
Befehl mit Ihrem zweiten such-string. Dieser Befehl ermöglicht Ihnen das ausführen einer subsearch und "import" ein-Spalten Sie in die Basis-Suche.Sobald Sie die zwei Spalten in derselben Tabelle. Sie können die
eval
Befehl zum erstellen eines neuen Felds vergleicht die zwei Werte und weist einen Wert, wie Sie es wünschen.Hoffe, das hilft.
http://docs.splunk.com/Documentation/Splunk/5.0.2/SearchReference/Appendcols
http://docs.splunk.com/Documentation/Splunk/latest/SearchReference/Eval
InformationsquelleAutor MHibbin
Ich bin mir nicht sicher, warum es notwendig ist, um diese als zwei separate Abfragen. Alles kommt aus der gleichen sourcetype, und wird mit fast identischen Daten. Also ich würde so etwas wie die folgenden:
Dieser packt alle Ereignisse vom angegebenen sourcetype und index, die eine call_id, und entweder A_to und A_from oder B_to und B_from. Dann alle Buchungen, können Sie filter auf der Grundlage der "xyz-event:" (Was auch immer das ist)
Dann schafft es ein neues Feld namens "an", was zeigt A_from wenn A_from == B_from, sonst zeigt es "no_match" (Platzhalter, da Sie nicht angeben, was getan werden sollte, wenn Sie nicht übereinstimmen)
Da ist auch ein Weg, um potenziell gegen das ohne die Verwendung von Transaktionen. Obwohl ohne mehr details in den zugrunde liegenden Daten kann ich nicht sicher sagen. Die grundlegende Idee ist, dass, wenn Sie ein gemeinsames Feld (call_id in diesem Fall), können Sie einfach Statistiken zu sammeln Werte, die mit diesem Feld statt eines teuren transaction-Befehl.
Beispiel:
Unter Verwendung der ersten() oder last() eigentlich auch egal, wenn es nur einen Wert pro call_id. (Sie können auch verwenden Sie min() max() avg() und du bekommst die gleiche Sache) - Vielleicht dies wird Ihnen helfen, die Ausgabe, die Sie brauchen, leichter.
InformationsquelleAutor emiller42