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

# 저장된 뷰 만들기 및 관리

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

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

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

<Tabs>
  <Tab title="UI">
    Weave UI에서 저장된 뷰를 생성, 로드, 이름 변경, 편집할 수 있습니다. UI는 임시 테이블 설정을 재사용 가능한 뷰로 저장하는 가장 빠른 방법입니다. 프로그래밍 방식으로 제어하려면 **Python** 탭을 선택하세요.

    ### 저장된 뷰 생성

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

    ### 저장된 뷰 로드

    1. **Traces** 또는 **Evals** 탭으로 이동하세요.
    2. 탭 제목 왼쪽의 **menu** (<Icon icon="bars" iconType="solid" />) 버튼을 클릭하세요. 저장된 모든 뷰가 포함된 드롭다운 메뉴가 표시됩니다.
    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** 왼쪽의 **menu** (<Icon icon="bars" iconType="solid" />) 버튼을 클릭하세요.
    4. 드롭다운 메뉴에서 **Delete view**를 클릭하세요.
    5. 팝업 모달에서 **Delete view**를 클릭하여 확인하세요. 또는 **Cancel**을 클릭하여 삭제를 중단하세요.

    ### 기본 뷰로 돌아가기

    1. **Traces** 또는 **Evals** 탭으로 이동하세요.
    2. **Traces** 또는 **Evals** 탭 오른쪽의 **menu** (<Icon icon="bars" iconType="solid" />) 버튼을 클릭하세요. 저장된 모든 뷰가 포함된 드롭다운 메뉴가 표시됩니다.
    3. 메뉴 하단에서 **Traces** 또는 **Evals**를 클릭하세요. 기본 뷰가 표시됩니다.
  </Tab>

  <Tab title="Python">
    Weave의 `SavedView` 클래스를 사용하면 트레이스 및 평가 데이터의 뷰를 저장, 필터링, 정렬하고 사용자 지정할 수 있습니다. 다음 섹션에서는 뷰를 초기화하고, 컬럼과 필터를 설정하며, 뷰를 영구 저장하여 나중에 조건에 맞는 Call을 조회하는 방법을 살펴봅니다.

    ### `SavedView` 초기화하기

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

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

    view = weave.SavedView()
    ```

    ### `SavedView`를 그리드로 시각화하기

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

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

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

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

    ### 표시할 열 설정

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

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

    ### 열 추가

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

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

    ### 열 정렬

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

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

    ### 오퍼레이션 이름으로 필터링

    Weave에서 모든 트레이스 또는 평가는 오퍼레이션 이름과 연결되어 있습니다.
    `.filter_op()`를 사용하여 특정 오퍼레이션이 실행된 Call만 포함하도록 `SavedView`를 필터링하세요.

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

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

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

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

    #### Filter 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"`        | 날짜가 지정된 Timestamp 이후인지 확인합니다.     | `view.add_filter("started_at", "after", "2024-01-01")`  |
    | `"before"`       | 날짜가 지정된 Timestamp 이전인지 확인합니다.     | `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 lines theme={null}
    view.remove_filter("output.model_latency")
    ```

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

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

    ### `SavedView` 저장하기

    `.save()`를 사용하여 저장된 뷰를 Weave에 게시하세요.

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

    ### 함수 호출 조회하기

    `.get_calls()`를 사용하여 저장된 뷰의 필터와 일치하는 함수 호출을 조회하세요. `limit`, `offset`과 같은 선택 파라미터를 지정할 수 있습니다.

    ```python lines theme={null}
    calls = view.get_calls(limit=10)
    ```
  </Tab>
</Tabs>
