데이터 애널리스트 업무 이해하기

[SNOWFLAKE/스노우플레이크 공부] Pro 자격증 준비에 필요한 토막 지식 정리_External Functions

도쿄뱅 2024. 10. 12. 10:45
반응형

[SNOWFLAKE/스노우플레이크 공부] Pro 자격증 준비에 필요한 토막 지식 정리_External Functions


 

 

Snowflake의 External Functions에 대해 알기 쉽게 설명해볼게요!

1. External Functions란?

  • External Functions외부 서비스클라우드 기능을 Snowflake의 SQL 쿼리 안에서 직접 호출할 수 있도록 해주는 기능이에요.
  • 쉽게 말해, Snowflake 내부에 없는 계산이나 기능을, 다른 서버나 API를 호출해서 처리할 수 있게 해주는 거죠.
  • 이 기능을 이용하면, Snowflake 밖에 있는 외부 시스템과 실시간으로 데이터를 주고받거나, 외부에서 제공하는 특정 기능을 사용할 수 있어요.

2. External Functions의 필요성

  • 외부 데이터를 실시간으로 조회: 예를 들어, 환율 정보를 제공하는 외부 API를 호출해서 최신 환율 데이터를 가져와 계산할 수 있어요.
  • 복잡한 계산 및 머신러닝 모델: Snowflake 외부에서 복잡한 머신러닝 모델을 운영하고 있다면, 이를 호출해서 예측 결과를 받아볼 수 있어요.
  • 서드파티 서비스와 통합: Snowflake와 다른 클라우드 서비스(AWS Lambda, Google Cloud Functions 등) 간에 통신이 필요한 경우에도 유용해요.

3. External Functions의 작동 방식

  • External Function을 설정하면, Snowflake는 특정 SQL 쿼리를 실행할 때 외부 HTTP/REST API로 요청을 보내요.
  • 그 결과를 받아서 쿼리 결과의 일부로 반환해 주는 방식이에요.
  • 이를 위해서는 Snowflake와 외부 API가 서로 통신할 수 있도록 네트워크 연결과 보안 설정이 필요해요.

4. External Function 사용 예시

  • 예시: AWS Lambda와 연동하여 데이터 변환하기
    sql
    CREATE OR REPLACE EXTERNAL FUNCTION analyze_text(text STRING) RETURNS STRING API_INTEGRATION = 'my_api_integration' HEADERS = ( 'x-api-key' = 'your-api-key' ) AS 'https://your-lambda-url.amazonaws.com/prod/analyze';
    이 함수를 만든 후, SQL 쿼리에서 이렇게 호출할 수 있어요:이 쿼리를 실행하면, Snowflake는 AWS Lambda로 Hello Snowflake!라는 텍스트를 전송하고, Lambda가 텍스트를 분석한 결과를 Snowflake로 반환하게 돼요.
  • sql
    SELECT analyze_text('Hello Snowflake!');
  • 예를 들어, AWS Lambda 함수를 만들어서 텍스트를 분석하는 기능을 구현했다고 해볼게요. Snowflake의 데이터를 분석하기 위해, Snowflake에서 Lambda 함수를 호출하는 External Function을 만들 수 있어요.

5. External Functions의 구성 요소

  • API Integration: 외부 시스템과 연결하기 위해 필요한 API 설정이에요. 외부 함수가 어떤 API와 어떻게 통신할지 정의해요.
  • 외부 서비스(예: AWS Lambda, GCP Cloud Functions): External Function이 호출할 실제 함수나 서비스예요. 외부에서 처리할 로직을 여기에 정의하죠.
  • 보안 설정: Snowflake가 외부 API와 안전하게 통신할 수 있도록, 인증 토큰이나 보안 키를 설정해요. 데이터가 오가는 과정에서 보안이 중요한 이유죠.

6. External Functions와 UDF의 차이점

특징UDF (User Defined Function)External Function

처리 위치 Snowflake 내부에서 처리 외부 서버나 클라우드 서비스에서 처리
복잡한 로직 SQL이나 JavaScript로 작성된 간단한 로직 외부의 다양한 API와 서비스 이용 가능
사용 사례 데이터 변환, 간단한 수식 계산 머신러닝 모델 호출, 외부 데이터 가져오기
네트워크 필요성 Snowflake 내부에서만 동작 네트워크를 통해 외부 서비스와 통신

7. 비유로 이해하기

  • External Functions는 마치 레스토랑의 배달 서비스 같아요:
    • 레스토랑 안에서 대부분의 요리를 만들지만(즉, UDF로 처리할 수 있는 작업들), 때로는 특별한 요리를 제공받기 위해 외부 식당에 요청할 수 있어요.
    • 고객이 특별한 디저트를 주문했는데, 레스토랑 내부에는 그 디저트를 만들 방법이 없을 때, 레스토랑에서 외부 디저트 가게에 배달 요청을 보내는 거죠.
    • 외부 디저트 가게에서 디저트를 만들어 레스토랑으로 가져오면, 이를 고객에게 서빙하는 방식이에요.

8. External Functions 사용 시 주의할 점

  • 네트워크 비용: 외부로 데이터를 전송하거나 받아올 때 네트워크 비용이 발생할 수 있어요. 호출 빈도와 데이터 양을 신중히 고려해야 해요.
  • 속도: 외부 API를 호출하고 응답을 받을 때까지 시간이 걸리기 때문에, 쿼리 성능에 영향을 줄 수 있어요. 실시간으로 처리해야 하는 작업에는 신중하게 사용해야 해요.
  • 보안: 외부 API와 통신할 때는 API 키보안 토큰을 통해 안전하게 연결을 설정해야 해요. 보안이 잘못되면 민감한 데이터가 노출될 수 있어요.

9. 정리

External Functions는 Snowflake에서 외부 서비스와의 통합을 가능하게 하는 강력한 도구예요. 이를 통해 Snowflake에서 바로 외부 API를 호출하거나 복잡한 로직을 외부에서 처리할 수 있죠. UDF가 내부에서 반복 작업을 처리하는 도구라면, External Functions는 외부의 더 복잡한 작업을 처리하기 위한 다리 역할을 한다고 보면 돼요.

 

 


[SNOWFLAKE/스노우플레이크 공부] Pro 자격증 준비에 필요한 토막 지식 정리_External Functions

반응형