Join 연산자
개요
데이터를 풍부하게 만듭니다 join.
| join kind=<kind> <dest>=(<target_query>) on <condition>함수가 이벤트/리소스에서 실행됩니다. 해당 함수가 join 가 수행되면 파이프의 행이 <target_query> 을(를) 기준으로 <condition>. 결과 데이터에는 파이프의 원래 모든 필드와 <target_query> 에서 필드가 <dest> 필드에 추가됩니다. 반환되는 행은 <kind>.
<target_query>
<target_query>사용자를 사용할 것이며, target_query 는 조인될 데이터입니다. 단순히 테이블 이름과 같은 유효한 쿼리일 수 있습니다 (some_table) 또는 더 복잡한 문장 (some_table | extend id = a + b).
<condition>
<condition>사용자를 사용할 것이며, <condition> 은 파이프의 어떤 행이 <target_query>과(와) 조인될지를 제어하는 데 사용되는 식입니다. 모든 조인에 필요합니다 <kind> 다음 을(를) 제외하고 cross 조인. 조인은 $left 쪽(파이프)과 $right 쪽( <target_query>)을 가집니다. 예를 들어, 조건 $left.id == $right.id 은 동일한 값을 가진 행들을 id.
<kind>
<kind>어떤 행이 출력될지 제어하려면 kind.
inner
에 대해 일치하는 행만 반환합니다 조건.
leftouter
파이프의 모든 행을 target_query으로 풍부하게 반환합니다. 일치하는 항목이 없는 행은 null 에 대해 target_query.
rightouter
의 모든 행을 반환하며 target_query 파이프의 필드로 풍부하게 하며, 일치하는 항목이 없는 행은 null 파이프의 열에 대해
fullouter
파이프와 target_query모두의 행을 반환합니다. 일치하지 않는 항목도 포함됩니다.
cross
파이프의 모든 행과 target_query .
예제
IP 주소로 조인하기
예를 들어 우리 파이프에 sourceIP 필드에 IP 주소가 있고 이를 ip_location 라는 테이블의 데이터로 풍부하게 하려 한다고 가정해봅시다. 해당 테이블은 cidr.
이라는 <condition> 의 $left.sourceIp == $right.ip 를 사용하여 IP 주소를 기준으로 행을 일치시키고 kind=leftouter 를 사용하여 파이프의 모든 행을 반환할 수 있습니다—심지어 ip_location.
다음과 조인하기 tor_exit_nodes 표
tor_exit_nodes 표이 예는 inner 조인을 사용하여 aws_alb 로그 중에 clientIp 가 Panther에서 관리하는 tor_exit_node Enrichment Provider 을(를) 사용하여 쿼리할 수 있습니다.
다음과 조인하기 ipinfo_location_datalake UDF를 사용한 테이블
ipinfo_location_datalake UDF를 사용한 테이블다음은 더 복잡한 예로, ALB 로그를 Panther에서 관리하는 ipinfo_location_datalake Enrichment Provider 을(를) 사용하여 쿼리할 수 있습니다.
로 풍부하게 하는 예입니다. 이 쿼리는 snowflake.func 함수를 사용하여 SQL 사용자 정의 함수(UDF)를 호출합니다 panther_lookups.public.ipinfo_to_join_key() 와 panther_lookups.public.ipinfo_to_int()는 IP 주소를 인수로 받습니다. 이러한 UDF에 관해서는 IPinfo.
를 사용한 조인 datatable
datatable샘플 데이터를 join 를 사용하여 라우팅됩니다 datatable 연산자에서와 같이 후속 쿼리 식에서 참조할 수 있습니다:
마지막 업데이트
도움이 되었나요?

