Python을 사용하여 Snowflake 데이터베이스, 스키마, 테이블 및 뷰 관리하기¶
Python을 사용하여 Snowflake 데이터베이스, 스키마, 테이블 및 뷰를 관리할 수 있습니다. Snowflake의 데이터 관리 및 작업에 대한 자세한 내용은 데이터베이스, 테이블, 뷰 - 개요 섹션을 참조하십시오.
전제 조건¶
이 항목의 예제에서는 Snowflake와 연결하고 Snowflake Python APIs 을 사용할 수 있는 Root 오브젝트를 생성하는 코드를 추가했다고 가정합니다.
예를 들어, 다음 코드는 구성 파일에 정의된 연결 매개 변수를 사용하여 Snowflake에 대한 연결을 생성합니다.
해당 코드에서는 결과 Session 오브젝트를 사용하여 API의 유형과 메서드를 사용하기 위해 Root 오브젝트를 생성합니다. 자세한 내용은 Snowflake Python APIs 을 사용하여 Snowflake에 연결 섹션을 참조하십시오.
데이터베이스 관리하기¶
Snowflake에서 데이터베이스를 관리할 수 있습니다. Snowflake Python APIs 은 다음 두 가지 별개 유형의 데이터베이스를 나타냅니다.
Database: 이름과 같은 데이터베이스의 속성을 노출합니다.DatabaseResource: 해당Database오브젝트를 가져오고 데이터베이스를 삭제하는 데 사용할 수 있는 메서드를 노출합니다.
항목
데이터베이스 만들기¶
DatabaseCollection.create 메서드를 호출하고 생성하려는 데이터베이스를 나타내는 Database 오브젝트를 전달하여 데이터베이스를 생성할 수 있습니다. 데이터베이스를 생성하려면 먼저 데이터베이스 이름을 지정하는 Database 오브젝트를 생성하십시오.
다음 예제의 코드는 my_db 데이터베이스를 나타내는 Database 오브젝트를 생성한 다음 Database 오브젝트를 DatabaseCollection.create 메서드에 전달하여 데이터베이스를 생성합니다.
데이터베이스 세부 정보 가져오기¶
Database 오브젝트를 반환하는 DatabaseResource.fetch 메서드를 호출하여 데이터베이스에 대한 정보를 얻을 수 있습니다.
다음 예제의 코드는 my_db 데이터베이스에 대한 정보를 가져옵니다.
데이터베이스 나열하기¶
PagedIter 반복기를 반환하는 iter 메서드를 사용하여 데이터베이스를 나열할 수 있습니다.
다음 예제의 코드는 이름이 my 로 시작하는 데이터베이스를 나열합니다.
데이터베이스 제거 또는 복원하기¶
DatabaseResource.drop 메서드를 사용하여 데이터베이스를 제거하거나 DatabaseResource.undrop 메서드를 사용하여 데이터베이스를 복원할 수 있습니다.
이러한 작업을 보여주기 위해 다음 예제의 코드는 my_db 데이터베이스의 최신 버전을 제거한 다음 복원합니다.
스키마 관리하기¶
Snowflake에서 스키마를 관리할 수 있습니다. 스키마는 데이터베이스 수준 오브젝트입니다. 스키마를 생성하거나 참조할 때는 해당 데이터베이스의 컨텍스트에서 작업을 수행합니다.
Snowflake Python APIs 은 다음 두 가지 별개 유형의 스키마를 나타냅니다.
Schema: 이름과 같은 스키마의 속성을 노출합니다.SchemaResource: 해당Schema오브젝트를 가져오고 스키마를 삭제하는 데 사용할 수 있는 메서드를 노출합니다.
항목
스키마 만들기¶
스키마를 생성하려면 먼저 스키마 이름을 지정하는 Schema 오브젝트를 생성하십시오.
다음 예제의 코드는 my_schema 스키마를 나타내는 Schema 오브젝트를 생성합니다.
그런 다음 이 코드는 Schema 오브젝트를 SchemaCollection.create 메서드에 전달하여 my_db 데이터베이스에 스키마를 생성합니다.
스키마 세부 정보 가져오기¶
Schema 오브젝트를 반환하는 SchemaResource.fetch 메서드를 호출하여 스키마에 대한 정보를 얻을 수 있습니다.
다음 예제의 코드는 my_schema 스키마를 나타내는 Schema 오브젝트를 가져옵니다.
스키마 나열하기¶
iter 메서드를 사용하여 지정된 데이터베이스의 스키마를 나열할 수 있습니다. 이 메서드는 Schema 오브젝트의 PagedIter 반복기를 반환합니다.
다음 예제의 코드는 my_db 데이터베이스의 스키마 이름을 나열합니다.
스키마 제거 또는 복원하기¶
SchemaResource.drop 메서드를 사용하여 스키마를 제거하거나 SchemaResource.undrop 메서드를 사용하여 스키마를 복원할 수 있습니다.
이러한 작업을 보여주기 위해 다음 예제의 코드는 my_schema 스키마의 최신 버전을 제거한 다음 복원합니다.
표준 테이블 관리하기¶
Snowflake에서 표준 테이블을 관리할 수 있습니다. 테이블은 스키마 수준 오브젝트입니다. 해당 스키마의 컨텍스트에서 테이블을 생성하거나 참조합니다.
Snowflake Python APIs 은 다음 두 가지 별개 유형의 테이블을 나타냅니다.
Table: 이름, 열 등 테이블의 속성을 노출합니다.TableResource: 해당Table오브젝트를 가져오고 테이블 속성을 업데이트하고 테이블을 삭제하는 데 사용할 수 있는 메서드를 노출합니다.
항목
테이블 만들기¶
테이블을 생성하려면 먼저 테이블 이름, 열 이름, 열 데이터 타입을 지정하는 Table 오브젝트를 생성하십시오.
다음 예제의 코드는 지정된 열이 있는 my_table 테이블을 나타내는 Table 오브젝트를 생성합니다.
그런 다음 코드는 Table 오브젝트를 TableCollection.create 메서드에 전달하여 my_db 데이터베이스와 my_schema 스키마에 테이블을 생성합니다.
테이블 세부 정보 가져오기¶
Table 오브젝트를 반환하는 TableResource.fetch 메서드를 호출하여 테이블에 대한 정보를 얻을 수 있습니다.
다음 예제의 코드는 my_table 테이블에 대한 정보를 가져옵니다.
테이블 생성 또는 변경하기¶
Table 오브젝트의 속성을 설정하고 이를 TableResource.create_or_alter 메서드에 전달하여 존재하지 않는 경우 테이블을 생성하거나, 존재하는 경우 테이블 정의에 따라 변경할 수 있습니다. create_or_alter 의 동작은 멱등성을 갖도록 설계되었으므로, 메서드를 호출하기 전에 테이블이 존재하는지 여부에 관계없이 결과 테이블 오브젝트는 동일합니다.
참고
create_or_alter 메서드는 명시적으로 정의하지 않은 테이블 속성에 대해 기본값을 사용합니다. 예를 들어, data_retention_time_in_days 을 설정하지 않으면 이전에 다른 값으로 테이블이 존재했더라도 기본값은 None 으로 설정됩니다.
다음 예제의 코드는 데이터 타입이 int 인 c3 이라는 새 열을 my_table 테이블에 추가한 다음, Snowflake에서 테이블을 변경합니다.
테이블 나열하기¶
Table 오브젝트의 PagedIter 반복기를 반환하는 iter 메서드를 사용하여 지정된 스키마의 테이블을 나열할 수 있습니다.
다음 예제의 코드는 이름이 my 로 시작하는 테이블을 나열합니다.
테이블 이름 바꾸기¶
TableResource.swap_with 메서드를 사용하여 단일 트랜잭션에서 테이블의 이름을 다른 테이블과 바꿀 수 있습니다. 자세한 내용은 ALTER TABLE 에서 SWAP WITH 매개 변수 설명을 참조하십시오.
다음 예제의 코드는 동일한 데이터베이스와 스키마에서 my_table 을 other_table 로 바꿉니다.
다음 예제의 코드는 (my_db 데이터베이스 및 my_schema 스키마에 있는) my_table 을 (other_db 데이터베이스 및 other_schema 스키마에 있는) other_table 로 바꿉니다.
테이블 작업 수행하기¶
테이블에 대한 재클러스터링 관리 및 테이블 제거 또는 복원과 같은 일반적인 테이블 작업을 TableResource 오브젝트를 사용하여 수행할 수 있습니다.
이러한 테이블 작업에 대한 자세한 내용은 SQL 명령 참조에서 테이블, 뷰, 시퀀스 및 사용자 정의 유형 명령 섹션을 참조하십시오.
테이블 리소스로 할 수 있는 일부 작업을 보여주기 위해 다음 예제의 코드는 다음을 수행합니다.
my_db데이터베이스와my_schema스키마에서my_table테이블 리소스 오브젝트를 가져옵니다.테이블에 대한 재클러스터링을 일시 중단합니다.
테이블에 대한 재클러스터링을 재개합니다.
테이블을 제거합니다.
제거한 테이블의 가장 최근 버전을 복원합니다.
이벤트 테이블 관리하기¶
Snowflake 이벤트 테이블을 관리할 수 있습니다. 이벤트 테이블은 Snowflake가 원격 분석 데이터를 수집할 수 있는 미리 정의된 일련의 열이 있는 특수한 종류의 데이터베이스 테이블입니다. 자세한 내용은 이벤트 테이블 개요 섹션을 참조하십시오.
Snowflake Python APIs 은 두 가지 유형의 이벤트 테이블을 나타냅니다.
EventTable: 이벤트 테이블의 이름, 데이터 보존 시간, 최대 데이터 확장 시간, 변경 내용 추적 옵션 등의 속성을 표시합니다.EventTableResource: 해당EventTable오브젝트를 가져오고, 이벤트 테이블의 이름을 바꾸고, 이벤트 테이블을 삭제하는 데 사용할 수 있는 메서드를 노출합니다.
항목
이벤트 테이블 만들기¶
이벤트 테이블을 생성하려면 먼저 EventTable 오브젝트를 생성한 다음 API Root 오브젝트에서 EventTableCollection 오브젝트를 만듭니다. EventTableCollection.create 를 사용하여 Snowflake에 새 이벤트 테이블을 추가합니다.
다음 예제의 코드는 지정된 매개 변수를 사용하여 my_event_table 이라는 이벤트 테이블을 나타내는 EventTable 오브젝트를 생성합니다.
이 코드는 EventTableCollection 변수 event_tables 를 생성하고 EventTableCollection.create 를 사용하여 Snowflake에 새 이벤트 테이블을 생성합니다.
이벤트 테이블 세부 정보 얻기¶
EventTable 오브젝트를 반환하는 EventTableResource.fetch 메서드를 호출하여 이벤트 테이블에 대한 정보를 얻을 수 있습니다.
다음 예제의 코드는 my_event_table 이라는 이벤트 테이블에 대한 정보를 가져옵니다.
이벤트 테이블 목록¶
EventTable 오브젝트의 PagedIter 반복기를 반환하는 EventTableCollection.iter 메서드를 사용하여 이벤트 테이블을 나열할 수 있습니다.
다음 예제의 코드는 my_db 데이터베이스와 my_schema 스키마에서 이름이 my 로 시작하는 이벤트 테이블을 나열하고 각 테이블의 이름을 출력합니다.
다음 예제의 코드도 이름이 my 로 시작하는 이벤트 테이블을 나열하지만, like 대신 starts_with 매개 변수를 사용합니다. 이 예제에서는 선택적 매개 변수 show_limit=10 를 설정하여 결과 수를 10 로 제한합니다.
이벤트 테이블 작업 수행¶
이벤트 테이블 이름 변경 및 이벤트 테이블 삭제와 같은 일반적인 이벤트 테이블 작업을 EventTableResource 오브젝트를 사용하여 수행할 수 있습니다.
참고
현재 ALTER TABLE(이벤트 테이블) 의 RENAME 기능만 지원됩니다.
기본 이벤트 테이블 SNOWFLAKE.TELEMETRY.EVENTS에서는 RENAME이 지원되지 않습니다.
이벤트 테이블 리소스로 할 수 있는 작업을 보여주기 위해 다음 예제의 코드는 다음을 수행합니다.
my_db데이터베이스와my_schema스키마에서my_event_table이벤트 테이블 리소스 오브젝트를 가져옵니다.이벤트 테이블의 이름을 변경합니다.
이벤트 테이블을 삭제합니다.
뷰 관리하기¶
Snowflake에서 뷰를 관리할 수 있습니다. 뷰는 스키마 수준의 오브젝트이며 쿼리 결과를 마치 테이블처럼 액세스할 수 있습니다. 뷰를 생성하거나 참조할 때는 해당 스키마의 컨텍스트에서 수행해야 합니다.
참고
ALTER VIEW 는 현재 지원되지 않습니다.
Snowflake Python APIs 은 두 가지 유형이 있는 뷰를 나타냅니다.
View: 뷰의 이름, 열 및 SQL 쿼리 문과 같은 뷰의 속성을 표시합니다.ViewResource: 해당View오브젝트를 가져오고 데이터베이스를 보는 데 사용할 수 있는 메서드를 노출합니다.
항목
뷰 만들기¶
뷰를 생성하려면 먼저 뷰 이름, 열 및 SQL 쿼리 문을 지정하는 View 오브젝트를 생성합니다.
다음 예제의 코드는 지정된 열과 SQL 쿼리가 있는 my_view 뷰를 나타내는 View 오브젝트를 생성합니다.
그런 다음 코드는 ViewCollection.create 메서드에 View 오브젝트를 전달하여 my_db 데이터베이스와 my_schema 스키마에 뷰를 생성합니다.
뷰 세부 정보 얻기¶
View 오브젝트를 반환하는 ViewResource.fetch 메서드를 호출하여 뷰에 대한 정보를 얻을 수 있습니다.
다음 예제의 코드는 my_view 뷰를 나타내는 View 오브젝트를 가져옵니다.
목록 뷰 수¶
iter 메서드를 사용하여 지정된 데이터베이스의 뷰를 나열할 수 있습니다. 이 메서드는 View 오브젝트의 PagedIter 반복기를 반환합니다.
다음 예제의 코드는 my_db 데이터베이스 및 my_schema 스키마에서 이름이 my 로 시작하는 뷰를 나열합니다.
다음 예제의 코드에도 이름이 my 로 시작하는 뷰가 목록에 표시되지만, like 대신 starts_with 매개 변수를 사용합니다. 이 예제에서는 선택적 매개 변수 show_limit=10 를 설정하여 결과 수를 10 로 제한합니다.
뷰 삭제하기¶
ViewResource.drop 메서드를 사용하여 뷰를 삭제할 수 있습니다.
다음 예제의 코드는 my_view 뷰를 삭제합니다.