> 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 (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를 사용하는 위치

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` 테이블에서 지난 하루 전에 발생한 이벤트를 걸러내고, 남은 이벤트를 시간순으로 정렬한 다음, 처음 10개의 이벤트를 반환합니다.

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

1. `panther_logs.public.aws_alb`
   * 이 문장은 데이터 소스를 식별합니다.
   * 이 쿼리는 다음에서 읽고 있습니다. `panther_logs.public.aws_alb` 테이블입니다. 쿼리에 이 줄만 포함되어 있다면 테이블의 모든 데이터가 반환됩니다.
2. `| where p_event_time > time.ago(1d)`
   * 해당 [`where` 연산자](/ko/pantherflow/operators/where.md) 다음을 사용합니다: [표현식](/ko/pantherflow/expressions.md) 데이터를 필터링합니다.
   * 이 쿼리는 다음 조건의 데이터를 요청합니다. `p_event_time` 필드 값이 하루 전 시각보다 큽니다. 즉, 지난 하루 동안 발생한 이벤트를 요청하는 것입니다.  `time.ago()` 함수는 현재 시간에서 값을 뺍니다. 그리고 그 인수(`1일`)은 하루를 나타내는 타임스탬프 상수입니다.
3. `| sort p_event_time`
   * 해당 [`정렬` 연산자](/ko/pantherflow/operators/sort.md) 이벤트를 하나 이상의 필드 값 기준으로 정렬할 수 있습니다.
   * 이 쿼리는 데이터를 다음 기준으로 정렬합니다. `p_event_time`. 왜냐하면 [기본 정렬 순서](/ko/pantherflow/operators/sort.md) 가 내림차순이기 때문에 가장 최근 이벤트가 먼저 반환됩니다.
4. `| limit 10`
   * 해당 [`제한` 연산자](/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를 사용하여, 다음은 할 수 없습니다:
  * 저장된 검색을 예약하기(즉, 다음을 생성하기: [예약 검색](/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)
* 집계(즉, [`요약` 연산자](/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) 는 다음과 같은 연산자를 사용할 때 추가되거나 제거된 필드를 반영하지 않습니다. [`투영`](/ko/pantherflow/operators/project.md), [`확장`](/ko/pantherflow/operators/extend.md), 그리고 [`요약`](/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:

```
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.
