> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-feature-automate-reference-docs-generation.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Saved views

Weave에서 *저장된 뷰*를 사용하면 추적된 함수 호출 및 평가와 상호 작용하는 방식을 사용자 지정할 수 있습니다. 저장된 뷰를 정의하여 필터, 정렬 및 열 가시성을 구성하여 관련 데이터에 빠르게 액세스할 수 있습니다.

Weave Python SDK 또는 UI를 통해 직접 뷰를 생성, 수정 및 저장할 수 있습니다. Python SDK는 프로그래밍 방식의 필터링 및 쿼리에 대한 세밀한 제어를 제공하는 반면, UI는 **Traces** 및 **Evals** 탭에서 다양한 테이블 구성을 쉽게 탐색하고 저장할 수 있게 해줍니다.

이 가이드에서 다루는 내용:

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

## Python SDK의 저장된 뷰

Weave의 `SavedView` 클래스는 추적 및 평가 데이터의 뷰를 저장, 필터링, 정렬 및 사용자 지정하는 방법을 제공합니다.

### Weave 프로젝트에서 `SavedView`

Weave 프로젝트에서 `SavedView` 인스턴스를 초기화합니다:

```python
import weave
client = weave.init(<my_project>)

view = weave.SavedView()
```

### 그리드로 `SavedView` 시각화

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

```python
view.to_grid(limit=5)
```

다음을 사용하여 그리드 표현을 표시합니다 `.show()`:

```python
view.to_grid().show()
```

### 표시할 열 설정

뷰에 표시할 열을 설정하려면 `.set_columns()`를 사용합니다. 표시할 하나 이상의 열을 지정합니다.

```python
view.set_columns("id", "op_name")
```

### 열 추가

뷰에 하나 이상의 새 열을 추가하려면 `.add_column()`를 사용합니다. 추가할 하나 이상의 열을 지정합니다.

```python
# Add a column with the field specifier and label "Created"
view.add_column("Created")
# Optionally, you can add a second argument to specify a different label name for the new column. By default, the field specifier is use for the label.
```

### 열 정렬

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

```python
view.sort_by("started_at", "desc")
```

### 작업 이름으로 필터링

Weave에서 모든 추적 또는 평가는 작업 이름과 연결됩니다.
`.filter_op()`를 사용하여 `SavedView`를 필터링하여 특정 작업이 실행된 호출만 포함하도록 합니다.

```python
view.filter_op("Evaluation.predict_and_score")
```

### 연산자 및 조건으로 필터링

뷰에 사용자 지정 필터를 적용하려면 `.add_filter()`를 사용합니다. [지원되는 필터 연산자](#filter-operators) 중 하나와 조건을 사용하여 필터를 정의합니다.

```python
view.add_filter("output.model_latency", ">=", 5)
```

#### 필터 연산자

| 연산자              | 설명                                | 예시                                                      |
| ---------------- | --------------------------------- | ------------------------------------------------------- |
| `"contains"`     | 문자열이 하위 문자열을 포함하는지 확인합니다.         | `view.add_filter("output.status", "contains", "error")` |
| `"equals"`       | 문자열이 주어진 값과 정확히 일치하는지 확인합니다.      | `view.add_filter("input.category", "equals", "Alice")`  |
| `"in"`           | 문자열이 값 목록에 있는지 확인합니다.             | `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)`  |

### 필터 제거

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

```python
view.remove_filter("output.model_latency")
```

모든 필터를 제거하려면 `.remove_filters()`를 사용합니다.

```python
view.remove_filters()
```

### 저장된 뷰 저장`SavedView`

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

```python
view.save()
```

### 함수 호출 검색

저장된 뷰의 필터와 일치하는 함수 호출을 검색하려면 `.get_calls()`를 사용합니다. `limit`와 `offset`와 같은 선택적 매개변수를 지정할 수 있습니다.

```python
calls = view.get_calls(limit=10)
```

## UI의 저장된 뷰

Weave UI에서 저장된 뷰를 생성, 로드, 이름 변경 및 편집할 수 있습니다. 세밀한 제어를 위해서는 [Python SDK](#saved-views-in-the-python-sdk)를 사용하세요.

### 저장된 뷰 생성

1. 귀하의 **Traces** 또는 **Evals** 탭으로 이동합니다.
2. 테이블 구성에서 다음 변수 중 하나를 조정합니다:
   * 필터
   * 정렬 순서
   * 페이지 크기
   * 열 가시성
   * 열 고정
3. 다음 두 가지 옵션 중 하나를 사용하여 뷰를 저장합니다:
   * 오른쪽 상단 모서리에서 **Save view**를 클릭합니다.
   * Save view 왼쪽에 있는 햄버거 메뉴를 클릭합니다**Save view**. 드롭다운 메뉴에서 **+ Save as new view**를 클릭합니다.

### 저장된 뷰 로드

1. 귀하의 **Traces** 또는 **Evals** 탭으로 이동합니다.
2. 탭 제목 왼쪽에 있는 햄버거 메뉴를 클릭합니다. 모든 저장된 뷰를 보여주는 드롭다운 메뉴가 표시됩니다.
3. 액세스하려는 뷰를 클릭합니다. 저장된 뷰가 **Traces** 또는 **Evals** 탭에 표시됩니다.

### 저장된 뷰 이름 변경

1. 저장된 뷰 로드[저장된 뷰 로드](#load-a-saved-view)에 설명된 단계를 따릅니다.
2. 왼쪽 상단 모서리의 **Traces** 또는 **Evals** 탭에서 뷰 이름을 클릭합니다.
3. 뷰의 새 이름을 입력합니다.
4. 새 뷰 이름을 저장하려면 **Enter**를 누릅니다.

### 저장된 뷰 편집하기

1. 다음에 설명된 단계를 따릅니다 [저장된 뷰 불러오기](#load-a-saved-view).
2. 테이블 구성을 조정합니다.
3. 오른쪽 상단 모서리에서 **Save view**를 클릭합니다.

### 저장된 뷰 삭제하기

<Warning>
  더 이상 귀하와 팀에게 유용하지 않다고 생각되는 뷰를 삭제할 수 있습니다. 이 작업은 취소할 수 없습니다.
</Warning>

1. 귀하의 **Traces** 또는 **Evals** 탭으로 이동합니다.
2. [삭제하려는 뷰를 불러옵니다](#load-a-saved-view).
3. Save view 왼쪽에 있는 햄버거 메뉴를 클릭합니다**Save view**.
4. 드롭다운 메뉴에서 **Delete view**를 클릭합니다.
5. 팝업 모달에서 **Delete view**를 클릭하여 확인합니다. 또는 **Cancel**을 클릭하여 삭제를 중지합니다.

### 기본 뷰로 돌아가기

1. 귀하의 **Traces** 또는 **Evals** 탭으로 이동합니다.
2. Traces 또는 Evals 탭 오른쪽에 있는 햄버거 메뉴를 클릭합니다**Traces** 또는 **Evals** 탭. 모든 저장된 뷰를 보여주는 드롭다운 메뉴가 표시됩니다.
3. 메뉴 하단에서 **Traces** 또는 **Evals**를 클릭합니다. 기본 뷰가 표시됩니다.
