대시보드 및 워크시트에서 쿼리 결과 필터링

Snowflake의 모든 역할이 사용할 수 있는 시스템 필터를 사용하거나 관리자가 만든 사용자 지정 필터를 사용하여 대시보드 및 SQL 워크시트에서 쿼리 결과를 필터링할 수 있습니다.

사용자 지정 필터 만들기

사용자 지정 필터를 사용하면 쿼리를 직접 편집하지 않고도 쿼리 결과를 변경할 수 있습니다.

필터는 하위 쿼리 또는 값 목록으로 확인되는 특수 키워드로 구현되며, 쿼리 실행에 사용됩니다. 따라서 SQL 쿼리에서 필터를 사용할 때 몇 가지 제한 사항이 있습니다. SQL 쿼리에 필터 지정 섹션을 참조하십시오.

참고

사용자 지정 필터가 생성된 후에는 계정의 모든 사용자가 이를 보고 사용할 수 있습니다. 사용자 지정 필터에는 연관된 역할이 있지만, 해당 역할은 필터 표시 여부를 제한하지 않습니다.

권한을 부여하여 사용자 지정 필터 만들기

사용자가 사용자 지정 필터를 만들 수 있도록 하려면 ACCOUNTADMIN 역할이 있는 사용자가 해당 사용자에게 부여된 역할에 관련 권한을 부여해야 합니다. Snowsight 를 사용하여 역할에 사용자 지정 필터를 만들 수 있는 기능만 부여할 수 있습니다.

계정에 대한 사용자 지정 필터를 만들 수 있는 권한을 역할에 부여하려면 다음을 수행합니다.

  1. Snowsight 에 로그인합니다.

  2. 워크시트 목록을 열고 워크시트를 열려면 Projects » Worksheets 를 선택하고, 대시보드 목록을 열고 대시보드를 열려면 Projects » Dashboards 를 선택합니다.

  3. 필터 표시하기 또는 숨기기 을 선택하고, 워크시트에 있으면 Manage Filters 를 선택합니다.

  4. 이때 나타나는 대화 상자에서 Edit Permission 을 선택합니다.

  5. Filter Permissions 대화 상자에서 필터를 만들 수 있는 권한을 부여할 역할을 선택합니다.

  6. Save 를 선택합니다.

사용자 지정 필터 만들기

필터를 만들려면 Snowsight 를 사용해야 하며, 사용자 지정 필터를 만들려면 권한이 있는 역할을 사용해야 합니다.

사용자 지정 필터를 만들려면 다음을 수행합니다.

  1. Snowsight 에 로그인합니다.

  2. 워크시트 목록을 열고 워크시트를 열려면 Projects » Worksheets 를 선택하고, 대시보드 목록을 열고 대시보드를 열려면 Projects » Dashboards 를 선택합니다.

  3. 필터 표시하기 또는 숨기기 을 선택하고, 워크시트에 있으면 Manage Filters 를 선택합니다.

  4. 이때 나타나는 Filters 대화 상자에서 + Filter 를 선택합니다.

  5. 필터를 추가하려면 다음을 완료하십시오.

    1. Display Name 에, 필터의 이름을 입력합니다. 이 이름은 워크시트나 대시보드에서 필터를 선택할 때 필터에 표시됩니다.

    2. SQL Keyword 에, 쿼리에 삽입할 고유 키워드를 입력합니다. 공백을 사용하지 않고 :<문자열> 형식을 사용합니다. 예를 들어 :page_path 과 같습니다.

    3. Description 에, 필터에 대한 설명을 입력합니다.

    4. Role 에 대해, 필터와 연결할 역할을 선택하고 필터가 쿼리를 기반으로 하는 경우 필터 값을 채우는 데 사용되는 쿼리를 실행합니다. 드롭다운 목록에는 사용자 지정 필터를 만들 수 있는 권한이 있는 역할만 표시됩니다. 자세한 내용은 사용자 지정 필터의 소유권 관리 섹션을 참조하십시오.

    5. Warehouse 에 대해, 필터가 쿼리를 기반으로 하는 경우, 필터 값을 새로 고칠 웨어하우스를 선택합니다. 필터의 소유자 역할은 선택한 웨어하우스에 대한 USAGE 권한이 있어야 합니다. 이러한 단계의 일부로 쿼리를 실행하고 유효성 검사하려면 웨어하우스가 실행 중이어야 합니다.

    6. Options via 에 대해, 필터 값을 쿼리로 채울지 목록으로 채울지 선택합니다.

      • Query 를 선택한 경우 Write Query 를 선택하고 필터 쿼리 작성에 대한 지침은 필터를 채우려면 쿼리를 작성합니다 를 참조하십시오.

      • List 를 선택한 경우 다음을 수행합니다.

        1. Edit List 를 선택합니다.

        2. 선택적으로, Name 에, 목록 항목의 이름을 입력합니다. 해당 이름이 필터의 드롭다운 목록에 표시됩니다. 이름을 제공하지 않으면 Value 가 사용됩니다.

        3. Value 에, 필터에 사용할 열 이름의 값을 입력합니다.

        4. 목록이 완성될 때까지 이름과 값 쌍을 계속 추가한 다음 Save 를 선택합니다.

  6. Add Filter 대화 상자에서, Value Type 에 대해, 목록 항목이 Text 또는 Number 타입의 데이터인지 선택합니다.

  7. 사용자가 필터 옵션의 삭제 목록에서 여러 항목을 선택할 수 있도록 하려면 Multiple values can be selected 토글을 켭니다.

  8. 사용자가 열의 모든 항목에 대한 결과를 볼 수 있도록 하려면 Include an “All” option 토글을 켠 다음 All 옵션의 함수 방식을 선택합니다.

    • 필터에서 Any valueAll 로 선택하면 필터 목록에 값이 있는지 여부와 관계없이 필터가 적용되는 열이 결과에 어떤 값이라도 포함될 수 있습니다.

    • 필터에서 Any value in list of optionsAll 로 선택하면 필터가 적용되는 열에 필터 목록의 모든 항목이 포함된다는 의미입니다.

  9. 사용자가 필터에 지정되지 않은 항목의 결과도 볼 수 있도록 하려면 Include an “Other” option 토글을 켭니다.

  10. Save 를 선택합니다.

  11. Done 을 선택하여 Filters 대화 상자를 닫습니다.

필터를 채우려면 쿼리를 작성합니다

쿼리에서 필터 옵션 목록을 채우려면 쿼리가 특정 지침을 따라야 합니다.

  • namevalue 열을 반환해야 합니다.

  • 선택적인 열 description 을 반환할 수 있습니다.

  • 다른 열도 반환할 수 있지만 해당 열은 드롭다운 필터 목록에 표시되지 않습니다.

필터는 한 번에 1개의 쿼리만 실행할 수 있습니다. 필터 옵션 목록을 생성하기 위해 여러 쿼리를 실행할 수 없습니다(예: 한 쿼리를 실행하여 value 열을 반환하고 두 번째 쿼리를 실행하여 name 열을 반환).

참고

필터 옵션 목록을 채우는 데 사용되는 쿼리는 필터를 만든(또는 마지막으로 수정한) 사용자로 실행됩니다. 사용자 지정 필터가 만들어진 후에는 계정에 있는 모든 사용자가 해당 필터를 보고 사용할 수 있으므로 쿼리로 생성된 필터 옵션 목록에 보호된 데이터나 민감한 데이터가 포함되지 않도록 주의해야 합니다.

필터 쿼리를 작성하여 New filter 대화 상자에 추가한 후 다음을 수행하여 쿼리 필터 설정을 완료합니다.

  1. Done 을 선택하여 필터 쿼리를 저장하고 Add Filter 대화 상자로 돌아갑니다.

  2. 선택 사항으로 기본 새로 고침 옵션을 Refresh hourly 에서 Never refresh 또는 Refresh daily 로 변경할 수 있습니다. 필터 새로 고침 옵션에 대한 세부 사항 및 고려 사항은 사용자 지정 필터에 대한 새로 고침 빈도 관리 섹션을 참조하십시오.

  3. 사용자 지정 필터를 만드는 단계로 돌아가서 필터 만들기를 완료합니다. 사용자 지정 필터 만들기 섹션을 참조하십시오.

계정의 사용자 지정 필터를 검토하고 관리합니다.

계정의 사용자 지정 필터를 검토하려면 워크시트나 대시보드를 열고 필터 표시하기 또는 숨기기 을 선택합니다.

사용자 지정 필터 목록을 채우는 데 사용되는 쿼리의 새로 고침 빈도 변경 등 필터를 변경하려면 ACCOUNTADMIN 역할 또는 필터를 관리할 수 있는 권한 이 있는 역할이 있어야 합니다. 사용자 지정 필터에 대한 새로 고침 빈도 관리 섹션을 참조하십시오.

사용자 지정 필터의 소유권 관리

각 사용자 지정 필터에는 연관된 역할이 있습니다. 해당 역할이 있는 모든 사용자는 필터를 편집하거나 삭제할 수 있습니다. ACCOUNTADMIN 역할이 있는 사용자는 계정의 모든 필터를 보고 수정할 수 있습니다.

필터와 연결된 역할이 삭제된 경우 필터 역할을 삭제하는 역할은 사용자 지정 필터의 소유권을 상속받지 못합니다. 대신, ACCOUNTADMIN 역할이 있는 사용자가 필터를 편집하고 필터와 연결된 역할을 변경할 수 있습니다.

사용자 지정 필터에 대한 새로 고침 빈도 관리

SQL 쿼리로 채워지는 사용자 지정 필터에는 새로 고침 빈도도 있습니다. 새로 고침 빈도는 매시간, 매일 또는 안 함으로 설정할 수 있습니다.

필터는 저장된 시점과 필터 옵션을 새로 고치는 쿼리를 실행하는 데 걸린 시간에 따라 실행됩니다.

예를 들어, 시간별 쿼리 새로 고침 빈도가 10:07 AM인 필터를 저장하면 첫 번째 새로 고침 쿼리는 11:07 AM 이후에 실행됩니다. 많은 수의 필터 새로 고침 쿼리가 동시에 실행되도록 예약된 경우, 동시에 실행되는 필터 새로 고침 쿼리 수를 제한하기 위해 쿼리가 큐에 추가됩니다. 다음 필터 새로 고침은 마지막 새로 고침이 완료된 시점을 기준으로 합니다. 이 예제에서 11:07 AM에 쿼리 새로 고침을 완료하는 데 20분이 걸리면 다음 새로 고침 쿼리는 12:27 PM 또는 그 이후에 실행됩니다.

필터 새로 고침은 필터를 만들거나 마지막으로 수정한 사용자로 실행되며 Query History 에서 Queries executed by user tasks 유형 중 하나로 표시됩니다. Query History 사용에 대한 자세한 내용은 쿼리 기록으로 쿼리 활동 모니터링하기 섹션을 참조하십시오.

어느 필터가 필터 쿼리를 새로 고치는지 확인하려면 필터 목록을 열고 각 필터를 열어 세부 정보를 확인해야 합니다.

실패한 필터 쿼리 새로 고침 문제 해결

필터 쿼리 새로 고침은 다음 중 하나의 이유로 실패할 수 있습니다.

  • 필터를 생성하거나 마지막으로 수정한 사용자가 Snowflake에서 삭제되었거나 비활성화되었습니다.

  • 사용자가 3개월 동안 로그인하지 않아 비활성 상태입니다.

지정된 필터를 만든 사용자나 마지막으로 수정한 사용자를 볼 수 없습니다. 새로 고침에 실패하는 필터가 있는 경우 공유 SNOWFLAKE 데이터베이스의 ACCOUNT_USAGE 스키마에 대한 LOGIN_HISTORY 뷰 뷰에서 WORKSHEETS_APP_USER 사용자의 인증 시도가 성공한 후 사용자의 인증 시도가 실패한 것으로 표시될 수 있습니다.

예를 들어, 다음 쿼리를 사용하여 지난 이틀 동안의 OAuth 액세스 토큰을 사용한 로그인 활동을 식별할 수 있습니다.

SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.LOGIN_HISTORY
WHERE
    FIRST_AUTHENTICATION_FACTOR = 'OAUTH_ACCESS_TOKEN'
    AND
    REPORTED_CLIENT_TYPE = 'SNOWFLAKE_UI'
    AND
    EVENT_TIMESTAMP > DATEADD('DAY', -2, CURRENT_DATE());
ORDER BY
    EVENT_TIMESTAMP DESC;
Copy

사용자 지정 필터 새로 고침 빈도에 따라 실패한 쿼리 새로 고침 빈도와 관련된 실패한 인증 시도는 매일 같은 시간이나 매시간 발생합니다.

SQL 쿼리에 필터 지정

SQL 쿼리에서 시스템 필터 또는 사용자 지정 필터를 사용할 수 있습니다. 저장 프로시저 또는 사용자 정의 함수(UDF)에서는 필터를 사용할 수 없습니다.

SQL 쿼리에 필터를 추가하려면 다음 형식 중 하나를 사용합니다.

  • 필터를 SELECT :<filter_name>(<col_name>) 같은 SELECT 문의 일부로 지정합니다.

  • 등호를 비교자로 사용하여 필터를 지정합니다. 예:

    • WHERE <col_name> = :<filter_name>

    • WHERE <:filter_name> = <col_name>

    • <value_a>:<value_b>::string = <:filter_name>

등호 기호만 필터의 비교자로 사용할 수 있으므로, LIKE 또는 CONTAINS 필터를 사용할 수 없습니다.

필터가 적용되는 열은 필터에 필요한 값 타입과도 일치해야 합니다.

  • 사용자 지정 필터 세트에서 텍스트 값 유형을 사용하려면 열이 텍스트 문자열이거나 쿼리에서 텍스트 문자열로 형변환되어야 합니다. 텍스트 문자열의 데이터 타입 섹션을 참조하십시오.

  • 사용자 지정 필터 세트에서 숫자 값 유형을 사용하려면 열이 숫자 데이터 타입이어야 합니다. 숫자 데이터 타입 섹션을 참조하십시오.

  • 시스템 필터의 경우 열은 TIMESTAMP 데이터 타입이어야 합니다. 날짜 및 시간 데이터 타입 섹션을 참조하십시오.

SQL 쿼리에 필터를 추가한 다음 드롭다운 목록을 사용하여 필터 옵션을 선택하면 쿼리의 SQL 구문이 변경됩니다. 목록의 다른 옵션을 선택할 때 SQL 구문이 변경되는 방식에 대한 자세한 내용은 다음 테이블을 참조십시오.

필터 SQL 참조

선택한 필터 옵션

사용한 SQL

목록 항목

<col> = <list_item>

여러 목록 항목이 선택됨

<col> IN (<list_item>, <list_item>)

모두, Any value 지정됨

true

모두, Any value in list of options 지정됨

<col> IN (<list_item>, <list_item>, ... )

기타

<col> NOT IN(<list_item>, <list_item>, ... )

필터 적용 및 저장

필터에서 선택한 옵션을 변경하면, 변경 사항을 적용하는 옵션이 표시됩니다. Apply 를 선택하면 워크시트 또는 대시보드가 실행되고 필터링된 업데이트된 결과가 표시되어 저장하지 않고도 변경 사항을 검토할 수 있습니다.

대시보드의 필터에 변경 사항을 적용한 후에는 변경 사항을 저장하는 옵션이 표시됩니다. Save 를 선택하면 대시보드에서 변경한 내용이 저장되어 대시보드의 다른 사용자가 사용할 수 있습니다.

예를 들어, Apply 를 선택하여 필터를 변경하여 All Time 의 결과를 볼 수 있지만 다음에 대시보드를 열 때 대시보드가 너무 많은 양의 데이터에 대해 실행되는 것을 원하지 않으므로 Save 를 선택하지 않을 수 있습니다. 모든 시간에 걸쳐 대시보드를 실행한 후 날짜 범위 필터를 Last 7 days 로 변경하고 Apply 를 선택하여 대시보드를 실행한 다음 Save 를 선택하여 대시보드 사용자의 해당 기본 필터 값을 저장합니다.

Snowsight 시스템 필터

모든 역할에서 사용할 수 있는 시스템 필터는 다음과 같습니다.

  • :daterange

    • 날짜 범위(예: Last day, Last 7 days, Last 28 days, Last 3 months, Last 6 months, Last 12 months, All time 또는 사용자 지정 날짜 범위)를 기준으로 열을 필터링합니다.

      참고

      날짜 범위 필터는 항상 UTC 타임존을 사용하며 TIMESTAMP_INPUT_FORMAT 매개 변수의 영향을 받지 않습니다.

      기본값은 Last day 입니다.

  • :datebucket

    • 그룹은 일정 기간(예: Second, Minute, Hour, Day, Week, Month, 월의 Quarter 또는 Year)을 기준으로 데이터를 집계합니다.

      기본값은 Day 입니다.

이러한 필터는 편집하거나 삭제할 수 없습니다.

예: 날짜 필터 작업

예를 들어, SNOWFLAKE_SAMPLE_DATA 데이터베이스의 ORDERS 테이블과 TPCH_SF1 스키마와 같은 주문 데이터가 있는 테이블이 있다고 가정할 때, 테이블을 쿼리하고 결과를 일별 또는 주별 등 특정 시간 버킷별로 그룹화하고 결과를 검색할 특정 날짜 범위를 지정하고 싶을 수 있습니다.

이를 위해서는 다음과 같이 쿼리를 작성하면 됩니다.

SELECT
    COUNT(O_ORDERDATE) as orders,
    :datebucket(O_ORDERDATE) as bucket
FROM
    SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.ORDERS
WHERE
    O_ORDERDATE = :daterange
GROUP BY
    :datebucket(O_ORDERDATE)
ORDER BY
    bucket;
Copy

이 예제에서는 다음을 수행합니다.

  • 주문 수를 계산하고 ORDERS 테이블에서 주문 날짜에 대한 세부 정보를 검색합니다.

  • WHERE 절에 :daterange 시스템 필터를 포함시켜 특정 날짜 범위로 결과를 필터링합니다.

  • GROUP BY 절에 :datebucket 시스템 필터를 포함시켜 특정 기간별로 결과를 그룹화합니다.

  • ORDER BY 절을 포함하여 결과를 가장 빠른 기간부터 가장 최근 기간까지 정렬합니다.

쿼리에 필터를 추가하면 워크시트나 대시보드 상단에 해당 필터 버튼이 표시됩니다.

필터 버튼이 나타나는 경우 버튼은 탭 순서에서 필터 버튼 표시 및 숨기기 메뉴를 따릅니다.

쿼리에서 표시되는 결과를 조작하려면 필터를 사용하여 특정 값을 선택합니다.

이 예제에서는 날짜 버킷 필터에 해당하는 Group by 필터를 Day 별로 그룹화하도록 설정합니다. 날짜 범위 필터에 해당하는 다른 필터를 All time 으로 설정합니다.

Apply 를 선택하고 결과에 필터를 적용하면 결과가 요일별로 그룹화되어 다음과 같은 결과가 표시됩니다.

+--------+------------+
| orders |  buckets   |
+--------+------------+
|    621 | 1992-01-01 |
|    612 | 1992-01-02 |
|    598 | 1992-01-03 |
|    670 | 1992-01-04 |
+--------+------------+

다른 날짜 버킷을 선택하면 다른 데이터 그룹을 표시할 수 있습니다. 예를 들어, 주간 주문 데이터를 보려면 Group by 필터를 Week 으로 설정하고 Apply 를 선택합니다. 다음과 같은 결과가 출력됩니다.

+--------+------------+
| orders |  buckets   |
+--------+------------+
|   3142 | 1991-12-30 |
|   4404 | 1992-01-06 |
|   4306 | 1992-01-13 |
|   4284 | 1992-01-20 |
+--------+------------+