Hi,
is it possible to add field via lookup and use this as text form input element?
I tried it out by using this xml, but it did not work:
Here is my example:
<fieldset autoRun="true" submitButton="true">
<input type="text" token="country_code" searchWhenChanged="true">
<label>Enter an countrycode</label>
<default>*</default>
<default/>
</input>
<input type="time">
<default>Today</default>
</input>
</fieldset>
<row>
<table>
<title>test1</title>
<searchString>sourcetype=A country_code=$country_code$
| lookup lookup.csv user OUTPUT country_code
| stats count</searchString>"
BR
Heinz
400000 Einträge wäre kein Ding, wenn für einen country_code
nur ein Bruchteil davon zurückgegeben werden... aber tendentiell wird das nicht gleich verteilt sein.
Der automatic lookup macht die Felder immer verfügbar. Sie werden aber nicht immer geladen, zum Beispiel wenn du ein reporting command ohne Verwendung der Felder des Lookups anhängst und nicht anhand des Lookups filterst und nicht im verbose mode bist, wird der Lookup - wie alle unnötigen field extractions - nicht geladen.
Schau in den job inspector was am meisten Zeit verbrät. Ich rate alles um fetch
herum, also Events laden.
400000 Einträge wäre kein Ding, wenn für einen country_code
nur ein Bruchteil davon zurückgegeben werden... aber tendentiell wird das nicht gleich verteilt sein.
Der automatic lookup macht die Felder immer verfügbar. Sie werden aber nicht immer geladen, zum Beispiel wenn du ein reporting command ohne Verwendung der Felder des Lookups anhängst und nicht anhand des Lookups filterst und nicht im verbose mode bist, wird der Lookup - wie alle unnötigen field extractions - nicht geladen.
Schau in den job inspector was am meisten Zeit verbrät. Ich rate alles um fetch
herum, also Events laden.
Gerne - falls du mal vor-Ort-Hilfe brauchst...
Klasse, danke dir
Klar - in der UI kannst du in der Lookup Definition unter Advanced Options die Minimum Matches auf 1 und die Default Matches auf "N/A" setzen. In transforms.conf übersetzt sich das dann in folgendes:
[lookup_name]
filename = lookup.csv
min_matches = 1
default_matches = N/A
Edit: so ein Denglisch 😄
Kannst du mir noch verraten, wie ich einen fest definierten Wert einfüge, sofern es keinen match beim automatic lookup gibt?
Mit einem normalen lookup würde ich es so lösen:
| lookup lookup.csv user OUTPUT country_code
| fillnull valu="N/A" country_code
Klingt gut, dann werde ich es mal mit einem automatic lookup versuchen.
Vielen Dank!
Schon mal vielen Dank für deine Hilfe!
Es sind momentan über 400.000 Einträge im Lookup. Also muss ich wohl die zweite Variante nutzen.
Ein automatic Lookup würde dann in jeder Suche mit dem sourcetype verwendet werden richtig? Wenn er nicht immer benötigt wird, macht es evtl mehr Sinn ihn nur bei Bedarf zu setzen um ansonsten Performance zu sparen.
Welchen Unterschied macht es in obiger Suche eigentlich ob ich
| where country_code="$country_code$"
oder
| search country_code="$country_code$"
Mit "search" könnten ja wildcards genutzt werden.
Was schneller ist hängt vom Datensatz ab. Bei Millionen von Usern wird die subsearch fehlschlagen, bei wenigen Usern und vielen nicht-matchenden Events wird die andere Suche langsam sein, weil erst alle Events geladen werden müssen.
Wie viele Einträge hat das größte Land im Lookup?
Wenn du den zweiten Weg gehst, kannst du den Lookup als automatic konfigurieren, dann kannst du direkt in der ersten Suche danach filtern. Am alles-Laden-müssen ändert das allerdings nix.
z.B. so:
scheint auf den ersten Blick zu funktionieren.
| lookup lookup.csv user OUTPUT country_code
| where country_code="$country_code$"
| stats count
dann ist allerdings kein ALL, * etc mehr möglich
Super, das funktioniert schon mal.
Aber ist eine subsearch nicht unpraktisch, weil es ein Limit für die Ergebnisse gibt? Außerdem wird die Suche extrem langsam.
Wäre es nicht besser die Events im nachhinein zu filtern, wenn der Lookup schon durch ist?
Na klar 🙂
Jetzt lese ich erst, was du wirklich willst... Nutzer tippt country_code
ein, Splunk lädt den Lookup und filtert danach. Probier mal folgende Suche bei unverändertem XML:
sourcetype=A [inputlookup lookup.csv | search country_code="$country_code$" | fields user] | stats Count
Das sucht nach den Usern, die im Lookup den jeweiligen country_code
haben... ohne vorher alle zu laden 🙂
Hi Martin,
können wir wieder auf Deutsch umschwenken? 🙂
Ich bewege mich grad zum ersten mal auf diesem xml-Terrain und weiß nicht genau was du meinst. Wo könnte ich den lookup command evtl hinschieben?
Did you try using the lookup search in the populatingSearch element of the Input?
Edit: NVM that, misread the question...