Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

가상 테이블 입력과 출력 API

transforms-tables의 TableInput과 TableOutput은 Foundry 가상 테이블 자산을 변환에 연결합니다. 외부 테이블을 새 출력으로 등록할 때는 Foundry 위치뿐 아니라 소스 연결과 외부 저장 위치도 지정합니다.

TableInput과 TableOutput

구성인자의미
TableInput(alias)alias: str입력 가상 테이블의 Compass 경로나 RID
새 TableOutput(alias, source, table)alias: strFoundry에서 가상 테이블을 등록할 Compass 경로
동일source: str외부 출력에 사용할 소스 RID
동일table: Table외부 플랫폼 안의 저장 위치를 표현하는 locator
기존 TableOutput(alias)alias: str이미 생성한 가상 테이블 RID

Foundry 가상 출력 자산은 데이터셋 출력처럼 checks 과정에서 생성됩니다. 생성한 뒤에는 source와 table 설정을 생략하고 기존 가상 테이블 RID로 참조할 수 있습니다. 생성 이후 소스나 외부 위치를 변경하면 checks가 실패합니다. 기존 자산의 locator를 바꾸는 방식으로 다른 외부 테이블을 가리키게 할 수 없습니다.

Foundry Spark 실행에서는 함수에 TableTransformInput과 TableTransformOutput 핸들이 전달됩니다. 입력의 dataframe()은 Spark DataFrame을 읽으며 출력의 write_dataframe()으로 씁니다. JDBC 읽기 옵션은 dataframe(options={...})에 전달합니다.

BigQueryTable

BigQueryTable(project, dataset, table):

인자자료형필수의미
projectstr예BigQuery dataset이 속한 Google Cloud 프로젝트 ID
datasetstr예테이블을 담는 BigQuery dataset 이름
tablestr예BigQuery 테이블 이름

세 인자는 모두 필수입니다. BigQuery의 dataset은 테이블을 담는 외부 네임스페이스이며 Foundry 데이터셋 자산과 구분합니다.

BigQuery pushdown은 transform.bigquery.using()과 IbisInput, IbisOutput을 사용합니다. IbisInput.table()은 Ibis 테이블 표현식을 반환하고 IbisOutput.write(table_expr)는 그 표현식을 출력에 씁니다. 연결은 선언한 가상 입력/출력의 소스 설정으로 만들어집니다.

DatabricksTable

DatabricksTable(catalog, schema, table, format, location)의 뒤 두 인자는 선택 사항입니다.

인자자료형필수의미
catalogstr예Unity Catalog catalog 이름
schemastr예catalog 안의 schema 또는 database 이름
tablestr예테이블 이름
formatOptional[str]아니요delta 또는 iceberg. 생략 시 delta
locationOptional[str]아니요외부 테이블의 클라우드 저장 경로

Databricks 표를 외부에서 읽고 쓰는 구성에는 Unity Catalog의 external access가 준비되어야 합니다. Foundry-native 접근에서 사용하는 두 출력 위치는 다음과 같습니다.

  • External Delta는 location에 클라우드 디렉터리를 지정합니다. format="delta"는 기본값이므로 생략할 수 있습니다.
  • Managed Iceberg는 format="iceberg"로 지정합니다. 저장 위치는 Unity Catalog가 정하므로 location을 지정하지 않습니다.

Databricks 안으로 계산을 보내는 pushdown은 기본 Managed Delta도 지원합니다. Databricks 실행에 세 출력 유형과 write_dataframe()의 inline 옵션을 설명했습니다. Pushdown에서는 locator 대신 "catalog.schema.table" 형식의 문자열도 사용할 수 있습니다.

DeltaTable

DeltaTable(path)는 Delta Lake 테이블의 저장 경로를 지정합니다.

인자자료형필수의미
pathstr예Delta 테이블의 저장 경로

Azure Blob Filesystem, Google Cloud Storage 또는 Amazon S3 소스와 사용할 수 있습니다.

FilesTable

FilesTable(path, format)은 클라우드 디렉터리에 파일 형식으로 저장할 표를 지정합니다.

인자자료형필수의미
pathstr예파일을 저장할 폴더 경로
formatstr예avro, csv, parquet 중 파일 형식

Azure Blob Filesystem, Google Cloud Storage 또는 Amazon S3 소스와 사용할 수 있습니다. DeltaTable과 달리 Delta 트랜잭션 로그를 가진 테이블을 지정하는 locator가 아닙니다.

IcebergTable

IcebergTable(table, warehouse_path=None):

인자자료형필수의미
tablestr예db.table 또는 catalog 표기법에 따른 전체 식별자
warehouse_pathOptional[str]아니요테이블의 warehouse 저장 경로

연결한 소스가 지원하는 Iceberg catalog와 네임스페이스 표기법에 맞춥니다. 이 클래스는 외부 가상 테이블 locator이며 Foundry 네이티브 Iceberg 입력/출력 핸들과 구분합니다.

SnowflakeTable

SnowflakeTable(database, schema, table):

인자자료형필수의미
databasestr예Snowflake database 이름
schemastr예database 안의 schema 이름
tablestr예테이블 이름

세 인자는 모두 필수입니다. Snowflake 실행에서는 이 locator와 같은 소스의 입력을 이용해 Snowpark 또는 Snowpark Connect 세션을 구성합니다.

선언과 실행을 함께 사용하는 예

다음 경로와 RID 및 locator는 가상의 값입니다. 소스는 저장소에 가져온 실제 연결로 지정하고 외부 위치에 대한 쓰기 권한과 export controls를 준비합니다.

from transforms.api import transform
from transforms.tables import (
    SnowflakeTable,
    TableInput,
    TableOutput,
    TableTransformInput,
    TableTransformOutput,
)

SOURCE_RID = "ri.magritte..source.00000000-0000-0000-0000-000000000001"


@transform.spark.using(
    source_table=TableInput("/Example Project/Inputs/source_table"),
    output_table=TableOutput(
        "/Example Project/Outputs/output_table",
        SOURCE_RID,
        SnowflakeTable("DATABASE", "SCHEMA", "OUTPUT_TABLE"),
    ),
)
def compute(source_table: TableTransformInput, output_table: TableTransformOutput):
    output_table.write_dataframe(source_table.dataframe())