템플릿화된 검색

재사용을 위해 매개변수화된 SQL 표현식 모음을 내보내기

개요

템플릿 검색은 저장된 검색 (SQL로 작성되며) 변수를 포함합니다. 템플릿 매크로는 다른 저장된 검색에 가져와 인수와 함께 호출할 수 있는 템플릿형 검색입니다(함수 호출과 유사).

템플릿 매크로로 정의하지 않고 템플릿형 검색을 저장할 수 있습니다. 이 경우 쿼리는 다른 곳에서 실행할 수 없으며 변수 값은 동일한 저장된 검색 내에서 제공됩니다.

자주 사용하는 SQL 표현식을 단일 라이브러리 형태의 저장된 검색에 템플릿 매크로로 저장하면 복잡한 SQL 코드를 관리하고 재사용하기가 더 쉬워집니다. 예를 들어 아래 영역에 대한 관련 쿼리 "라이브러리"를 정의할 수 있습니다:

  • 직원 매크로

  • 상관 매크로

  • 보강(Enrichment) 매크로

템플릿형 검색은 Panther에서 다음을 포함하여 정의합니다 -- pragma: template 을(를) SQL의 첫 줄로 넣습니다.

circle-info

Panther는 Django 템플릿 언어arrow-up-right를 사용하며, 이는 Jinja 템플릿arrow-up-right과 밀접하게 유사합니다. DBTarrow-up-right 템플릿은 상호 운용이 가능합니다.

Panther의 템플릿 엔진은 pongo2arrow-up-right를 기반으로 구축되어 있어 모든 Django 문법을 지원하지는 않습니다. 자세한 내용은 pongo2에 대한 주의사항arrow-up-right 을(를) 참조하세요.

사용 예시

템플릿 매크로의 유용성을 설명하기 위해, 날짜 범위와 사용자 이름이 필요한 복잡한 쿼리(예: 50줄의 SQL)가 있다고 가정해 보세요. 템플릿 매크로가 없다면 이 검색을 실행할 때마다 특정 날짜 범위와 사용자 이름을 입력하도록 쿼리를 편집해야 하며, 이는 번거롭고 실수하기 쉽습니다.

대신 이 복잡한 쿼리를 템플릿 매크로로 생성할 수 있습니다(예제에서는 이름이 user_activity_profile ). 템플릿형 검색(예제에서는 이름이 user queries )에 날짜 범위와 사용자 이름에 대한 변수를 포함시켜 저장합니다.

그런 다음 아래와 같이 템플릿형 검색(user_activity_profile)에서 템플릿 매크로(user queries)를 가져와 사용자 이름과 날짜/시간 값을 전달하여 매크로를 호출하는 새 쿼리를 만들 수 있습니다. 그런 다음 검색을 저장할 수 있습니다(예: run_user_activity_profile). 이렇게 하면 더 빠르게 접근할 수 있습니다.

-- pragma: template

--loads query user_activity_profile from the saved query 'user queries'
{% import 'user queries' user_activity_profile %}

{{user_activity_profile('bob_smith', '2023-01-01 00:00:00', '2023-01-02 00:00:00')}}

템플릿형 검색 사용 방법

템플릿 매크로로 정의하지 않고 변수들을 사용하는 템플릿형 검색을 만들 수 있습니다. 이 경우 쿼리를 다른 저장된 검색에서 가져오지는 못하지만, 파일 상단에 모든 변수 값이 정의되어 있으므로 향후 실행이 더 간단해집니다.

템플릿형 검색 생성

Panther 콘솔의 데이터 탐색기(Data Explorer)나 로컬 CLI 워크플로우에서 템플릿형 검색을 생성할 수 있습니다.

Panther 콘솔에서 템플릿형 검색을 생성하는 방법

  1. Panther 콘솔의 왼쪽 탐색 바에서 조사(Investigate) > 데이터 탐색기(Data Explorer).

  2. SQL 편집기에서 맨 위에 -- pragma: template 를 추가합니다.

  3. 중괄호 2개({{ }})를 사용하여 변수를 선언하는 SQL 쿼리를 작성하세요. {{}} (이중 중괄호).

    • 예시:

  4. 변수 값을 설정하려면 파일 맨 위에 다음과 같은 문장을 추가하세요:

    • 예시:

  5. 클릭 다른 이름으로 저장(Save as), 그리고 다음 필드에 값을 입력하세요:

    • 쿼리 이름: 설명적인 이름을 추가하세요.

    • 태그: 유사한 쿼리를 그룹화하는 데 도움이 되도록 태그를 추가하세요.

    • 설명: 쿼리의 목적을 설명하세요.

    • 기본 데이터베이스: 쿼리할 데이터베이스를 선택하세요.

    • 이것이 예약된 쿼리입니까?: 이 토글을 켜기(ON)

      • 로 전환하면 이 쿼리가 정의된 간격으로 실행됩니다. 토글을

  6. 클릭 를 전환한 경우 시간 간격을 제공하세요..

select '{{p}}', '{{q}}'

데이터 탐색기에서 템플릿형 검색 실행

  1. Panther 콘솔의 왼쪽 탐색 바에서 조사(Investigate) > 데이터 탐색기(Data Explorer).

  2. 정의된 템플릿형 검색을 데이터 탐색기에서 열어 변수 값을 제공하면 실행할 수 있습니다. 오른쪽 상단에서 클릭.

  3. 저장된 쿼리 열기(Open Saved Query) 실행하려는 템플릿형 검색을 선택한 다음 클릭.

  4. 쿼리 열기(Open Query)

  5. 클릭 SQL 표현식의 모든 변수가 파일 상단에 다음과 같은 문장으로 값이 정의되어 있는지 확인하세요:.

쿼리 실행

예시 아래 예시에서 p q 1 p 변수에는 각각'queue'

값이 지정되어 있습니다.

템플릿 매크로 사용 방법

템플릿 매크로는 내보낼 수 있는 하나 이상의 템플릿형 검색으로, 다른 검색에서 가져와 사용할 수 있습니다. 여러 매크로를 하나의 템플릿형 쿼리에 그룹화하여 관련 매크로의 "라이브러리"를 만드는 것이 특히 유용할 수 있습니다.

템플릿 매크로 생성

템플릿 매크로는 Panther 콘솔의 데이터 탐색기나 로컬 CLI 워크플로우에서 생성할 수 있습니다.

  1. Panther 콘솔의 왼쪽 탐색 바에서 조사(Investigate) > 데이터 탐색기(Data Explorer).

  2. SQL 편집기에서 맨 위에 -- pragma: template 를 추가합니다.

  3. Panther 콘솔에서 템플릿 매크로를 생성하는 방법 {{}} (이중 중괄호).

  4. 중괄호를 사용하여 변수를 선언하는 하나 이상의 SQL 쿼리를 생성하세요

    • 각 템플릿형 쿼리를 다음으로 둘러싸세요: 쿼리 앞:

    • {% macro <macro name>(<variable_one>, <variable_two>) export %} 쿼리 뒤:

  5. 클릭 다른 이름으로 저장(Save as), 그리고 다음 필드에 값을 입력하세요:

    • 쿼리 이름: 설명적인 이름을 추가하세요.

      • {% endmacro %}

    • 태그: 유사한 쿼리를 그룹화하는 데 도움이 되도록 태그를 추가하세요.

    • 설명: 쿼리의 목적을 설명하세요.

    • 기본 데이터베이스: 쿼리할 데이터베이스를 선택하세요.

    • 이것이 예약된 쿼리입니까?이 값은 나중에 가져올 때 사용됩니다. : 이 토글을.

  6. 클릭 를 전환한 경우 시간 간격을 제공하세요..

쿼리 실행

변수를 이중 중괄호로 감싼 하나 이상의 쿼리를 추가하세요.

다른 쿼리에서 템플릿 매크로 호출하기

  1. Panther 콘솔의 왼쪽 탐색 바에서 조사(Investigate) > 데이터 탐색기(Data Explorer).

  2. 이전에 생성한 템플릿 매크로를 가져오고 변수 값을 전달하여 실행할 수 있습니다. -- pragma: template SQL 편집기에서 맨 위에

circle-info

문장을 추가하세요. 확장된 SQL이 표시되게 하려면(디버깅에 도움이 될 수 있음) 다음을 포함하세요.

  1. -- pragma: show macro expanded

  2. {% import '<name of Saved Search>' <name of macro> %}

  3. 클릭 SQL 표현식의 모든 변수가 파일 상단에 다음과 같은 문장으로 값이 정의되어 있는지 확인하세요:.

    • {{<name of macro>('<value of variable one>', '<value of variable two>')}} 원하면 쿼리를.

다른 이름으로 저장

{{my_query1('1.1.1.1', 'test')}}

템플릿 매크로 디버깅 확장된 SQL이 표시되게 하려면(디버깅에 도움이 될 수 있음) 다음을 포함하세요 데이터 탐색기에서 템플릿 매크로를 실행할 때 템플릿 코드만이 아닌 확장된 SQL 문을 보려면 -- pragma: template 문 아래에 다음을 추가하세요. 예를 들어, 데이터 탐색기에서 아래를 실행하면:

템플릿은 확장된 SQL로 대체됩니다:

사용자 정의 함수

Panther는 템플릿 작업을 더 쉽게 하기 위해 사용자 정의 함수를 구현했습니다.

split

Django는 문자열을 리스트로 분할하는 것을 지원하지 않습니다. Panther는 이 기능을 제공하기 위해 split 함수를 추가했습니다. 이는 for 루프를 사용할 때 유용할 수 있습니다.

예를 들어 테이블들 간에 쉽게 union을 수행하려는 다음 쿼리를 고려해 보세요:

Last updated

Was this helpful?