> For the complete documentation index, see [llms.txt](https://docs.panther.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.panther.com/ko/pantherflow.md).

# PantherFlow (베타)

## 개요

{% 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 쿼리를 작성하는 것 외에도, [AI를 사용해 자연어로 PantherFlow를 생성할 수 있습니다](/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를 사용하는 위치

Search에서 데이터를 쿼리하려면 PantherFlow를 사용하세요. [여기에서 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 함수](/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` table에서 데이터를 읽고, 지난 하루 이전에 발생한 이벤트를 걸러낸 다음, 남은 이벤트를 시간순으로 정렬하고, 처음 10개 이벤트를 반환합니다.

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

1. `panther_logs.public.aws_alb`
   * 이 문은 데이터 소스를 식별합니다.
   * 이 쿼리는 `panther_logs.public.aws_alb` table에서 읽고 있습니다. 쿼리에 이 줄만 포함되어 있다면, 테이블의 모든 데이터가 반환됩니다.
2. `| where p_event_time > time.ago(1d)`
   * 해당 [`where` 연산자](/ko/pantherflow/operators/where.md) 하나의 [식](/ko/pantherflow/expressions.md) 을 사용해 데이터를 필터링합니다.
   * 이 쿼리는 다음 조건의 데이터를 요청합니다: `p_event_time` 필드 값이 하루 전 시간보다 큽니다. 다시 말해, 지난 하루 이내에 발생한 이벤트를 요청하는 것입니다. 이 `time.ago()` 함수는 현재 시간에서 빼며, 그 인수(`1d`)는 하루를 나타내는 타임스탬프 상수입니다.
3. `| sort p_event_time`
   * 해당 [`정렬` 연산자](/ko/pantherflow/operators/sort.md) 를 사용하면 하나 이상의 field 값으로 이벤트를 정렬할 수 있습니다.
   * 이 쿼리는 데이터를 다음 기준으로 정렬합니다: `p_event_time`. 왜냐하면 [기본 정렬 순서](/ko/pantherflow/operators/sort.md) 가 내림차순이기 때문에, 가장 최근 이벤트가 먼저 반환됩니다.
4. `| limit 10`
   * 해당 [`limit` 연산자](/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를 사용하는 방법)
* 집계(즉, [`summarize` 연산자](/ko/pantherflow/operators/summarize.md))는 다음에 대한 정보를 표시하지 않습니다 [검색 결과 히스토그램](/ko/search/search-tool.md#search-results-histogram).
* Search에서 [**사용 가능한 필드** 목록은](/ko/search/search-tool.md#adding-removing-and-reordering-fields-in-the-results-table) project [`extend`](/ko/pantherflow/operators/project.md), [`같은 연산자를 사용할 때 추가되거나 제거되는 필드를 반영하지 않습니다.`](/ko/pantherflow/operators/extend.md), 그리고 [`summarize`](/ko/pantherflow/operators/summarize.md).
* 경우에 따라 PantherFlow 쿼리가 동일한 SQL 쿼리보다 느리게 실행될 수 있습니다.
* 해당 [`시각화` 연산자에는 고유한 제한 사항이 있습니다](/ko/pantherflow/operators/visualize.md#limitations).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
