SYSTEM$REMOTE_APP_OPERATION

SYSTEM$REMOTE_APP_OPERATION

Snowflake Native App에 대해 원격 앱 작업(remote app operation)을 수행하는 시스템 함수예요. 이 함수는 제공자(provider)만 사용할 수 있어요.

출처: Snowflake SQL Reference

본문

Syntax

SYSTEM$REMOTE_APP_OPERATION(
  '<operation_type>',
  '<package_name>',
  '<application_hash>'
  [, '<configuration>' ]
)

Arguments

필수:

'operation_type':

수행할 원격 작업의 유형이에요. 가능한 값: run_sql, enable, disable, retry_upgrade.

'package_name':

Snowflake Native App과 연결된 애플리케이션 패키지의 이름이에요.

'application_hash':

애플리케이션의 해시 값이에요. 이 값은 APPLICATION_STATE 뷰에서 확인하거나 SYSTEM$GET_HASH_FOR_APPLICATION을 호출해 찾을 수 있어요.

'configuration':

작업의 구성 필드를 포함하는 JSON 문자열이에요. run_sql 및 disable 작업 유형에 필요해요.

Returns

이벤트 테이블(event table)에서 작업 결과를 추적하는 데 사용할 수 있는 요청 ID가 포함된 JSON 문자열을 반환해요.

{"request_id": "<uuid>"}

Operation type: run_sql

run_sql 작업은 소비자 애플리케이션에서 SQL 문을 실행해요. 자세한 내용은 remote app operation guide를 읽어보세요.

configuration 인자에는 실행할 SQL 문을 값으로 하는 sql 키가 포함된 JSON 문자열을 전달해요. 예:

SELECT SYSTEM$REMOTE_APP_OPERATION(
  'run_sql',
  'package_name',
  'application_hash',
  '{"sql": "SELECT * FROM example_schema.example_table"}'
);

한 번에 하나의 SQL 문만 실행할 수 있어요. 여러 SQL 문을 제공하면(예: {"sql": "SELECT 1; SELECT 2"}) 실패해요.

Operation type: disable

disable 작업은 소비자 Snowflake Native App을 비활성화해요. 자세한 내용은 remote app operation guide를 읽어보세요. configuration 인자에는 Snowflake Native App을 비활성화하는 이유를 값으로 하는 reason 키가 포함된 JSON 문자열을 전달해요. 예:

SELECT SYSTEM$REMOTE_APP_OPERATION(
  'disable',
  'package_name',
  'application_hash',
  '{"reason": "Application needs to be disabled for maintenance"}'
);

Operation type: enable

enable 작업은 disable 작업으로 비활성화된 소비자 Snowflake Native App을 활성화해요. 예:

SELECT SYSTEM$REMOTE_APP_OPERATION(
  'enable',
  'package_name',
  'application_hash'
);

참고: 이 작업은 제공자가 비활성화한 애플리케이션만 활성화할 수 있어요. Snowflake가 비활성화한 애플리케이션이라면 What to do if an app is unavailable을 참고하세요.

Operation type: retry_upgrade

retry_upgrade 작업은 소비자 Snowflake Native App의 업그레이드를 재시도해요. 비차단(non-blocking) 방식이에요. 예:

SELECT SYSTEM$REMOTE_APP_OPERATION(
  'retry_upgrade',
  'package_name',
  'application_hash'
);

더 알아보기 (Learn more)