Объединение результатов из 2 индексов в запросе splunk

У меня есть один индекс idx1, другой индекс idx2 и общий столбец A, для которого необходимо выполнить сопоставление.

Мне трудно объединить данные из обоих столбцов. Я должен объединить данные таким образом, чтобы, если есть дубликаты, данные из idx1 должны иметь приоритет над данными из idx2; т.е. в основном эквивалент операции установки [a + (b-a)].

Я пробовал следующее:

| set diff  [ search index=idx2 sourcetype=src | dedup A ] [search index=idx1 sourcetype=src | dedup A ]
| stats count BY index A
| table index A

Здесь я получаю всего 10840 статистических данных с заполненными обоими столбцами.

Но когда я хочу отобразить другие столбцы из обоих индексов, я получаю для них пустые столбцы.

При выполнении:

| set diff  [ search index=1idx1 sourcetype=src | dedup A ] [search index=idx2 sourcetype=src | dedup A ]
    | stats count BY index

Я получаю результат как

количество индексов idx1 4791 idx2 6049

Может ли кто-нибудь помочь мне, как мне действовать?

Я пробовал даже это, но не уверен

index=idx1 sourcetype=src
| append [
| set diff  [ search index=idx2 sourcetype=src | dedup A ] [search index=idx1 sourcetype=src | dedup A ]]
    | stats count BY index A
    | table index A

person Abhinav Aashish    schedule 12.02.2021    source источник


Ответы (2)


Если есть поля, общие для обоих типов событий, вы можете использовать левое соединение для объединения данных. Это медленно, и его можно получить не более 50 000 результатов.

index=1idx1 sourcetype=src | dedup A 
| join type=outer A [search index=idx2 sourcetype=src | dedup A]
| ...

Более эффективный способ объединения результатов - это команда stats, но она не соблюдает требование, чтобы индекс A был выше индекса B.

person RichG    schedule 12.02.2021

Я пробовал примерно так:

index=idx1 sourcetype=src
| append [search index=idx2 sourcetype=src ]
| dedup A| table A B C D

idx1 имел 4791 событие

idx2 было 6049 событий

(idx1-idx2) имеет 2590 событий

(idx2-idx1) имеет 3848 событий

объединение 2 индексов насчитывает 8639 событий

пересечение 2 индексов имеет 2201 событие

Итак, после выполнения вышеуказанного запроса я получил 8639 событий

2590+3848+2201=8639

Думаю, это правильно ...

Любые предложения приветствуются

person Abhinav Aashish    schedule 13.02.2021
comment
Команда dedup сохраняет первое вхождение каждого значения поля A и отбрасывает все остальные. В примере запроса idx1 идет первым, поэтому совпадающие значения A из idx2 отбрасываются, что означает, что любые соответствующие значения полей B, C и D использоваться не будут. Это может быть, а может и не предназначаться. - person RichG; 13.02.2021
comment
Я не понял, что вы имели в виду, говоря, что соответствующие значения полей B, C и D не будут использоваться. Это может быть, а может и не предназначаться. - person Abhinav Aashish; 15.02.2021
comment
Правильно ли мой подход? - person Abhinav Aashish; 15.02.2021
comment
Правильность зависит от того, каким вы хотите получить конечный результат. Это не ясно. Если append создает два события: Index1 A E F G и Index2 A B C D, тогда dedup отбрасывает вторую строку, оставляя только Index1 A E F G. - person RichG; 15.02.2021
comment
Как лучше всего установить приоритет idx1 над idx2 в случае наличия дубликатов? - person Abhinav Aashish; 17.02.2021
comment
Используйте левое соединение, как в другом ответе. - person RichG; 17.02.2021