5단계: Snowflake에서 Azure를 위한 외부 함수 만들기

이 항목에서는 Snowflake에서 외부 함수 오브젝트를 만들기 위한 지침을 제공합니다. 이 오브젝트는 원격 서비스가 허용하는 매개 변수와 같이, 원격 서비스에 대한 정보를 저장합니다. Azure Portal을 사용하든 ARM 템플릿을 사용하든 관계없이 지침은 동일합니다.

참고

Snowflake의 외부 함수는 데이터베이스 오브젝트인데, 이는 외부 함수를 데이터베이스의 스키마에서 만들어야 한다는 뜻입니다. 외부 함수를 만들려면 함수를 만드는 데이터베이스 및 스키마에 대한 적절한 권한이 있어야 합니다.

자세한 내용은 액세스 제어 권한 섹션을 참조하십시오.

이 항목의 내용:

외부 함수 만들기

이 작업에서는 사용자가 Classic Console 의 Worksheets Worksheet tab 페이지에 있다고 가정합니다.

  1. CREATE EXTERNAL FUNCTION 문을 입력합니다. 이 문은 다음과 비슷한 형태여야 합니다.

    create or replace external function <external_function_name>(<parameters>)
        returns variant
        api_integration = <api_integration_name>
        as '<invocation_url>';
    
    Copy
  2. <외부_함수_이름> 을 고유한 함수 이름(예: echo)으로 바꿉니다. 이 이름은 오브젝트 식별자 에 대한 규칙을 따라야 합니다.

    또한, 추적 워크시트의 External Function Name 필드에 함수 이름을 기록합니다.

  3. <매개 변수> 를 함수에 대한 매개 변수의 이름과 SQL 데이터 타입(있는 경우)으로 바꿉니다.

    매개 변수는 원격 서비스에서 예상하는 매개 변수와 일치해야 합니다. 매개 변수 이름은 일치하지 않아도 되지만, 데이터 타입은 호환 가능해야 합니다.

    Azure 함수가 1단계에서 제공된 샘플 JavaScript 코드를 사용하는 경우에는 매개 변수가 INTEGER와 VARCHAR입니다. 예:

    a integer, b varchar
    
    Copy

    또한, 추적 워크시트의 External Function Name 필드에 매개 변수 이름과 데이터 타입을 기록합니다.

  4. <api_통합_이름> 을 추적 워크시트에 있는 API Integration Name 필드의 값으로 바꿉니다.

  5. <호출_url> 을 알맞은 URL로 바꿉니다. 이것은 Snowflake가 원격 서비스를 호출하기 위해 HTTP POST 명령을 보내는 대상 URL로, 다음 형식을 갖습니다.

    https://<api_management_service_name>.azure-api.net/<api_url_suffix>/<http_triggered_function_name>
    
    Copy

    여기서 사용하는 URL은 외부 함수를 만드는 데 Azure Portal을 사용하는지, ARM 템플릿을 사용하는지에 따라 다릅니다.

    Azure Portal

    추적 워크시트에 있는 API Management service name, HTTP-Triggered Function nameAPI Management API URL suffix 필드의 값을 사용합니다. 예를 들어, URL은 다음과 비슷한 형태여야 합니다.

    https://my-api-management-svc.azure-api.net/my-api-url-suffix/my_http_function
    
    Copy
    ARM 템플릿

    추적 워크시트에 있는 Azure Function HTTP Trigger URL 필드의 값을 사용합니다.

  6. 입력한 CREATE EXTERNAL FUNCTION 명령을 아직 실행하지 않았다면 실행하십시오.

외부 함수 테스트하기

이제 외부 함수를 호출하여 함수가 올바르게 작동하는지 확인할 수 있을 것입니다.

자세한 내용은 Azure용 외부 함수 호출하기 섹션을 참조하십시오.