# PantherFlow (Beta)

## 개요

{% hint style="info" %}
PantherFlow는 Panther 버전 1.110부터 공개 베타로 제공되며, 모든 고객이 사용할 수 있습니다. 버그 신고와 기능 요청은 Panther 지원팀에 공유해 주세요.
{% endhint %}

PantherFlow는 Panther의 파이프라인형 쿼리 언어입니다. 이해하기 쉽도록 설계되었지만, 강력하고 표현력이 뛰어납니다.

PantherFlow를 사용해 Panther에서 데이터를 탐색하고 분석하세요. 그 [연산자](/ko/pantherflow/operators.md) 및 [함수](/ko/pantherflow/functions.md)를 사용하면 필터링, 변환, 집계와 같은 다양한 데이터 작업을 수행할 수 있으며, 여기에 더해 [결과를 시각화](/ko/pantherflow/operators/visualize.md) 하여 막대 그래프나 선 그래프로 표시할 수 있습니다. PantherFlow는 스키마에 유연하므로, 하나의 쿼리에서 서로 다른 스키마를 가진 데이터 소스를 포함한 여러 데이터 소스를 매끄럽게 검색할 수 있습니다.

{% hint style="info" %}
자체 PantherFlow 쿼리를 작성하는 것 외에도, [자연어로 PantherFlow를 생성하는 데 AI를 사용할 수 있습니다](/ko/search/search-tool.md) Search에서.
{% endhint %}

PantherFlow 쿼리는 파이프(`|`)를 사용해 순차적으로 처리되는 데이터 작업을 구분합니다. 즉, 쿼리의 첫 번째 연산자의 출력이 두 번째 연산자의 입력으로 전달되고, 이런 식으로 계속됩니다. 아래 예시 쿼리를 보세요:

```kusto
panther_logs.public.okta_systemlog
| where p_event_time > time.ago(1d)
| search 'doug'
| summarize agg.count() by eventType 
```

에서 PantherFlow 쿼리를 최적화하는 방법을 알아보세요 [PantherFlow 모범 사례](/ko/pantherflow/best-practices.md).

### PantherFlow를 사용할 위치

PantherFlow를 사용해 Search에서 데이터를 쿼리하세요. [여기에서 Search에 PantherFlow를 입력하는 방법을 알아보세요](/ko/search/search-tool.md#using-pantherflow-in-search)와, 또한 [여기에서 자연어로 PantherFlow를 생성하는 데 AI를 사용하는 방법을 알아보세요](/ko/search/search-tool.md#ai-powered-pantherflow-query-generation).

쿼리 작성을 돕기 위해 Search의 PantherFlow 코드 편집기에는 자동 완성, 오류 밑줄, 호버 툴팁, 인레이 힌트, 함수 시그니처 지원이 있습니다.

## PantherFlow 쿼리가 작동하는 방식

"PantherFlow 쿼리"라는 용어는 일반적으로 [표 형식 표현식 문](/ko/pantherflow/statements.md#tabular-expression-statements)을 의미하며, 이는 데이터 세트를 가져와 어떤 형태로든 반환합니다(대조적으로 [let 문](/ko/pantherflow/statements.md#let-statements)). 표 형식 표현식 문에는 일반적으로 [연산자](/ko/pantherflow/operators.md) 파이프(`|`)로 구분된 항목이 포함됩니다. 각 연산자는 데이터를 필터링하거나 변환하는 등의 작업을 수행한 다음 다음 연산자에게 전달합니다. PantherFlow 문은 순차적으로 읽히므로 연산자 순서가 중요합니다.

PantherFlow 구문 개요는 다음에서 확인하세요 [PantherFlow 빠른 참고서](/ko/pantherflow/quick-reference.md)에서, 또는 구문 주제를 더 자세히 살펴보세요:

* [PantherFlow 문](/ko/pantherflow/statements.md)
* [PantherFlow 연산자](/ko/pantherflow/operators.md)
* [PantherFlow 데이터 유형](/ko/pantherflow/data-types.md)
* [PantherFlow 표현식](/ko/pantherflow/expressions.md)
* [PantherFlow Functions](/ko/pantherflow/functions.md)

### 단계별 PantherFlow 쿼리 예제

다음 PantherFlow 쿼리를 살펴보겠습니다:

```kusto
panther_logs.public.aws_alb
| where p_event_time > time.ago(1d)
| sort p_event_time
| limit 10
```

간단히 말해, 이 쿼리는 다음에서 데이터를 읽고 `aws_alb` 테이블에서 지난 하루 이전에 발생한 이벤트를 필터링한 다음, 남은 이벤트를 시간순으로 정렬하고, 처음 10개 이벤트를 반환합니다.

각 줄을 더 자세히 살펴보겠습니다:

1. `panther_logs.public.aws_alb`
   * 이 문은 데이터 소스를 식별합니다.
   * 이 쿼리는 다음에서 데이터를 읽고 있습니다 `panther_logs.public.aws_alb` 테이블. 쿼리에 이 줄만 포함되어 있다면, 테이블의 모든 데이터가 반환됩니다.
2. `| where p_event_time > time.ago(1d)`
   * The [`where` PantherFlow를 사용해 Search에서 전체 텍스트 검색 수행](/ko/pantherflow/operators/where.md) 은 [표현식](/ko/pantherflow/expressions.md) 을 사용하여 데이터를 필터링합니다.
   * 이 쿼리는 다음 조건에 해당하는 데이터를 요청합니다 `p_event_time` 필드 값이 하루 전 시각보다 큽니다. 다시 말해, 지난 하루 동안 발생한 이벤트를 요청하고 있습니다. 다음 `time.ago()` 함수는 현재 시간에서 빼며, 인수(`1d`)는 하루를 나타내는 타임스탬프 상수입니다.
3. `| sort p_event_time`
   * The [`정렬` PantherFlow를 사용해 Search에서 전체 텍스트 검색 수행](/ko/pantherflow/operators/sort.md) 를 사용하면 하나 이상의 필드 값으로 이벤트를 정렬할 수 있습니다.
   * 이 쿼리는 데이터를 다음 기준으로 정렬합니다 `p_event_time`. 왜냐하면 [기본 정렬 순서](/ko/pantherflow/operators/sort.md) 가 내림차순이기 때문에 가장 최근 이벤트가 먼저 반환됩니다.
4. `| limit 10`
   * The [`제한` PantherFlow를 사용해 Search에서 전체 텍스트 검색 수행](/ko/pantherflow/operators/limit.md) 는 반환할 이벤트의 최대 개수를 정의합니다.
   * 이 쿼리는 최대 10개의 이벤트만 요청합니다.

추가 쿼리 예제를 보세요:

* [PantherFlow 예제 쿼리](/ko/pantherflow/example-queries.md)
* [예약 검색 예제](/ko/search/scheduled-searches/examples.md)

## PantherFlow의 제한 사항

* 비록 [저장된 검색을 만들 수는 있지만](/ko/search/search-tool.md#creating-a-saved-search) Panther Console에서 PantherFlow를 사용해 만드는 것은 다음이 불가능합니다:
  * 저장된 검색을 예약하기(즉, 다음을 생성하기) [Scheduled Search](/ko/search/scheduled-searches.md))
  * 개발자 워크플로우에서 PantherFlow를 사용해 저장된 검색을 만들기(즉, 다음을 업로드하여) `saved_query` 를 통해 또는 다음을 사용하여 [Panther Analysis Tool](/ko/panther/detections-repo/pat/pat-commands.md) 또는 다음을 사용하여 [REST](/ko/panther/api/rest/queries.md) 또는 [GraphQL](/ko/panther/api/graphql/data-lake-queries.md) API)
* 집계(즉, [`요약` PantherFlow를 사용해 Search에서 전체 텍스트 검색 수행](/ko/pantherflow/operators/summarize.md)은 다음에 대한 정보를 표시하지 않습니다 [Search 결과 히스토그램](/ko/search/search-tool.md#search-results-histogram).
* Search에서 [**사용 가능한 필드** 목록은](/ko/search/search-tool.md#adding-removing-and-reordering-fields-in-the-results-table) 같은 연산자를 사용할 때 추가되거나 제거되는 필드를 반영하지 않습니다 [`프로젝트`](/ko/pantherflow/operators/project.md), [`extend`](/ko/pantherflow/operators/extend.md), 그리고 [`요약`](/ko/pantherflow/operators/summarize.md).
* 경우에 따라 PantherFlow 쿼리는 동일한 SQL 쿼리보다 더 느리게 실행될 수 있습니다.
* The [`시각화` 연산자에는 고유한 제한 사항이 있습니다](/ko/pantherflow/operators/visualize.md#limitations).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.panther.com/ko/pantherflow.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
