> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wandb.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 저장된 뷰 만들기 및 관리

> 트레이스된 함수 호출 및 평가와 상호작용하는 방식을 사용자 지정합니다

Weave에서 \_저장된 뷰\_를 사용하면 트레이스된 함수 호출 및 평가와 상호작용하는 방식을 사용자 지정할 수 있습니다. 저장된 뷰를 정의하면 필터, 정렬, 열 표시 여부를 설정해 관련 데이터에 빠르게 액세스할 수 있습니다. 저장된 뷰를 사용하면 매번 설정을 다시 적용하지 않아도 사용자와 팀이 동일하게 선별된 트레이스 또는 평가 데이터 범위로 다시 돌아갈 수 있습니다.

Weave Python SDK에서 직접 뷰를 만들고, 수정하고, 저장할 수 있으며 UI를 통해서도 가능합니다. Python SDK는 프로그래밍 방식의 필터링과 쿼리를 세밀하게 제어할 수 있게 해주며, UI에서는 **트레이스** 및 **Evals** 탭에서 다양한 테이블 설정을 탐색하고 저장할 수 있습니다.

이 가이드에서는 다음을 다룹니다.

* [Python SDK에서 저장된 뷰를 만들고 수정하는 방법](#saved-views-in-the-python-sdk).
* [Weave UI에서 저장된 뷰를 만들고 사용하는 방법](#saved-views-in-the-ui).

<div id="saved-views-in-the-python-sdk">
  ## Python SDK의 저장된 뷰
</div>

Weave의 `SavedView` 클래스는 트레이스 및 evals 데이터의 뷰를 저장, 필터링, 정렬하고 사용자 지정할 수 있게 해줍니다. 다음 섹션에서는 뷰를 초기화하고, 열과 필터를 구성한 다음, 나중에 일치하는 Call을 검색할 수 있도록 저장하는 방법을 안내합니다.

<div id="initialize-a-savedview">
  ### `SavedView` 초기화하기
</div>

Weave 프로젝트에서 `SavedView` 인스턴스를 초기화하세요:

```python lines theme={null}
import weave
client = weave.init("[MY_PROJECT]")

view = weave.SavedView()
```

<div id="visualize-the-savedview-as-a-grid">
  ### `SavedView`를 그리드로 시각화하기
</div>

`.to_grid()`를 사용하여 저장된 뷰를 그리드로 표시합니다. `limit`으로 표시할 최대 행 수를 지정합니다.

```python lines theme={null}
view.to_grid(limit=5)
```

`.show()`를 사용해 그리드 형태로 표시합니다:

```python lines theme={null}
view.to_grid().show()
```

<div id="set-displayed-columns">
  ### 표시할 열 설정
</div>

`.set_columns()`을 사용해 뷰에 표시할 열을 설정합니다. 표시할 열을 하나 이상 지정하세요.

```python lines theme={null}
view.set_columns("id", "op_name")
```

<div id="add-columns">
  ### 열 추가
</div>

`.add_column()`을 사용하여 뷰에 새 열을 하나 이상 추가합니다. 추가할 열을 하나 이상 지정하세요.

```python lines theme={null}
# 필드 지정자와 레이블 "Created"로 열을 추가합니다
view.add_column("Created")
# 선택적으로, 두 번째 인수를 추가하여 새 열에 다른 레이블 이름을 지정할 수 있습니다. 기본적으로 필드 지정자가 레이블로 사용됩니다.
```

<div id="sort-columns">
  ### 열 정렬
</div>

특정 열을 기준으로 결과를 정렬하려면 `.sort_by()`를 사용하세요. 정렬할 열 이름과 정렬 순서(`asc` 또는 `desc`)를 지정하세요.

```python lines theme={null}
view.sort_by("started_at", "desc")
```

<div id="filter-by-operation-name">
  ### 오퍼레이션 이름으로 필터링
</div>

Weave에서는 모든 트레이스 또는 eval이 오퍼레이션 이름에 연결됩니다.
`.filter_op()`을 사용해 해당 오퍼레이션이 실행된 Call만 포함하도록 `SavedView`를 필터링합니다.

```python lines theme={null}
view.filter_op("Evaluation.predict_and_score")
```

<div id="filter-by-operator-and-condition">
  ### Operator와 조건으로 필터링
</div>

`.add_filter()`를 사용해 뷰에 맞춤형 필터를 적용합니다. 필터는 [지원되는 필터 Operator](#filter-operators) 중 하나와 조건으로 정의합니다.

```python lines theme={null}
view.add_filter("output.model_latency", ">=", 5)
```

<div id="filter-operators">
  #### 필터 Operator
</div>

| Operator         | 설명                                 | 예시                                                      |
| ---------------- | ---------------------------------- | ------------------------------------------------------- |
| `"contains"`     | string에 부분 문자열이 포함되어 있는지 확인합니다.    | `view.add_filter("output.status", "contains", "error")` |
| `"equals"`       | string이 지정된 값과 정확히 일치하는지 확인합니다.    | `view.add_filter("input.category", "equals", "Alice")`  |
| `"in"`           | string이 값 목록에 포함되어 있는지 확인합니다.      | `view.add_filter("category", "in", ["A", "B", "C"])`    |
| `"="`            | 숫자가 지정된 값과 같은지 확인합니다.              | `view.add_filter("output.score", "=", 80)`              |
| `"≠", "!="`      | 숫자가 지정된 값과 같지 않은지 확인합니다.           | `view.add_filter("metrics.loss", "!=", 0.5)`            |
| `"<"`            | 숫자가 지정된 값보다 작은지 확인합니다.             | `view.add_filter("age", "<", 30)`                       |
| `"≤", "<="`      | 숫자가 지정된 값보다 작거나 같은지 확인합니다.         | `view.add_filter("metric.value", "<=", 100)`            |
| `">"`            | 숫자가 지정된 값보다 큰지 확인합니다.              | `view.add_filter("output.score", ">", 90)`              |
| `"≥", ">="`      | 숫자가 지정된 값보다 크거나 같은지 확인합니다.         | `view.add_filter("output.model_latency", ">=", 5)`      |
| `"is"`           | 불리언 필드가 `True` 또는 `False`인지 확인합니다. | `view.add_filter("is_active", "is", True)`              |
| `"after"`        | 날짜가 지정된 타임스탬프 이후인지 확인합니다.          | `view.add_filter("started_at", "after", "2024-01-01")`  |
| `"before"`       | 날짜가 지정된 타임스탬프 이전인지 확인합니다.          | `view.add_filter("ended_at", "before", "2024-12-31")`   |
| `"is empty"`     | 필드가 비어 있는지 확인합니다(`None` 또는 `""`).  | `view.add_filter("comments", "is empty", None)`         |
| `"is not empty"` | 필드가 비어 있지 않은지 확인합니다.               | `view.add_filter("attachments", "is not empty", None)`  |

<div id="remove-filters">
  ### 필터 제거
</div>

인덱스 또는 필드 이름을 사용해 뷰에서 특정 필터를 제거하려면 `.remove_filter()`를 사용합니다.

```python lines theme={null}
view.remove_filter("output.model_latency")
```

모든 필터를 제거하려면 `.remove_filters()`를 사용하세요.

```python lines theme={null}
view.remove_filters()
```

<div id="save-the-savedview">
  ### `SavedView` 저장하기
</div>

저장된 뷰를 Weave에 게시하려면 `.save()`를 사용합니다.

```python lines theme={null}
view.save()
```

<div id="retrieve-function-calls">
  ### 함수 호출 조회
</div>

저장된 뷰에 설정된 필터와 일치하는 함수 호출을 조회하려면 `.get_calls()`를 사용하세요. `limit` 및 `offset`과 같은 선택 매개변수를 지정할 수 있습니다.

```python lines theme={null}
calls = view.get_calls(limit=10)
```

<div id="saved-views-in-the-ui">
  ## UI에서 저장된 뷰
</div>

Weave UI에서 저장된 뷰를 생성, 불러오기, 이름 변경, 편집할 수 있습니다. UI는 임시 테이블 설정을 재사용 가능한 뷰로 저장하는 가장 빠른 방법입니다. 프로그래밍 방식으로 제어하려면 [Python SDK](#saved-views-in-the-python-sdk)를 사용하세요.

<div id="create-a-saved-view">
  ### 저장된 뷰 만들기
</div>

1. **트레이스** 또는 **Evals** 탭으로 이동합니다.
2. 테이블 설정에서 다음 항목을 원하는 대로 조정합니다:
   * Filters
   * 정렬 순서
   * 페이지 크기
   * 열 표시 여부
   * 열 고정
3. 다음 두 가지 방법 중 하나로 뷰를 저장합니다:
   * 오른쪽 상단에서 **Save view**를 클릭합니다.
   * **Save view** 왼쪽의 **메뉴** (<Icon icon="bars" iconType="solid" />) 버튼을 클릭합니다. 드롭다운 메뉴에서 **+ Save as new view**를 클릭합니다.

<div id="load-a-saved-view">
  ### 저장된 뷰 불러오기
</div>

1. **트레이스** 또는 **Evals** 탭으로 이동합니다.
2. 탭 제목 왼쪽의 **메뉴** (<Icon icon="bars" iconType="solid" />) 버튼을 클릭합니다. 저장된 모든 뷰가 표시된 드롭다운 메뉴가 나타납니다.
3. 열려는 뷰를 클릭합니다. 저장된 뷰가 **트레이스** 또는 **Evals** 탭에 표시됩니다.

<div id="rename-a-saved-view">
  ### 저장된 뷰 이름 변경
</div>

1. [저장된 뷰 불러오기](#load-a-saved-view)에 설명된 단계를 따르세요.
2. **트레이스** 또는 **Evals** 탭의 왼쪽 상단에서 뷰 이름을 클릭합니다.
3. 뷰의 새 이름을 입력합니다.
4. 새 뷰 이름을 저장하려면 **Enter**를 누릅니다.

<div id="edit-a-saved-view">
  ### 저장된 뷰 편집
</div>

1. [저장된 뷰 불러오기](#load-a-saved-view)에 설명된 step을 따르세요.
2. table 설정을 조정하세요.
3. 오른쪽 상단의 **Save view**을 클릭하세요.

<div id="delete-a-saved-view">
  ### 저장된 뷰 삭제
</div>

<Warning>
  더 이상 자신과 팀에 유용하지 않다고 판단되면 뷰를 삭제할 수 있습니다. 이 액션은 되돌릴 수 없습니다.
</Warning>

1. **트레이스** 또는 **Evals** 탭으로 이동합니다.
2. 삭제하려는 [뷰를 불러옵니다](#load-a-saved-view).
3. **Save view** 왼쪽에 있는 **메뉴 (<Icon icon="bars" iconType="solid" />)** 버튼을 클릭합니다.
4. 드롭다운 메뉴에서 **Delete view**를 클릭합니다.
5. 팝업 모달에서 **Delete view**를 클릭해 확인합니다. 또는 삭제를 취소하려면 **Cancel**을 클릭합니다.

<div id="return-to-the-default-view">
  ### 기본 뷰로 돌아가기
</div>

1. **트레이스** 또는 **Evals** 탭으로 이동합니다.
2. **트레이스** 또는 **Evals** 탭 오른쪽의 **메뉴** (<Icon icon="bars" iconType="solid" />) 버튼을 클릭합니다. 저장된 뷰가 모두 표시된 드롭다운 메뉴가 나타납니다.
3. 메뉴 하단에서 **트레이스** 또는 **Evals**를 클릭합니다. 기본 뷰가 표시됩니다.
