Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

출력 열 설명과 타입 클래스

Code Repositories의 Python 변환은 데이터셋의 열 설명과 column typeclass를 읽고 출력에 전달할 수 있습니다. 열 설명은 사람이 읽는 설명문이며, 타입 클래스는 열마다 name과 kind 문자열 쌍을 연결하는 구조화된 메타데이터입니다.

열 설명 쓰기

Spark TransformOutput.write_dataframe()의 선택 인자 column_descriptions에 열 이름을 키로, 설명을 값으로 갖는 사전을 전달합니다. 설명 한 개의 최대 길이는 800자입니다. API는 DataFrame에 실제로 존재하는 열과 사전 키의 교집합에만 설명을 적용하므로 사전에만 있는 열의 설명을 생성하지 않습니다.

다음은 가상의 입력과 출력 경로를 사용하는 변환입니다.

from transforms.api import Input, Output, transform


@transform(
    my_output=Output("/Example Project/Outputs/described_data"),
    my_input=Input("/Example Project/Inputs/source_data"),
)
def compute(my_input, my_output):
    my_output.write_dataframe(
        my_input.dataframe(),
        column_descriptions={"col_1": "원천 시스템의 항목 식별자"},
    )

col_1이 입력에 없으면 해당 설명은 적용되지 않습니다. 이 예제의 일반 @transform은 Spark를 사용하는 기존 문법입니다. 새 선언 방식과 혼용할 때는 변환 API 문법에서 실행 엔진을 구분합니다.

타입 클래스의 구조

column_typeclasses의 자료형은 Dict[str, List[Dict[str, str]]]입니다. 가장 바깥 사전의 키가 열 이름이며, 값은 해당 열에 붙은 타입 클래스 목록입니다. 목록의 각 사전에는 name과 kind 키만 사용하고 두 값 모두 문자열로 지정합니다.

column_typeclasses = {
    "my_column": [
        {"name": "my_typeclass_name", "kind": "my_typeclass_kind"}
    ]
}

위 문자열은 구조를 설명하는 예시 값입니다. 실제로 사용할 이름과 종류는 해당 메타데이터를 해석하는 애플리케이션의 계약에 맞춥니다.

입력 메타데이터를 출력에 전달하기

입력 핸들의 column_descriptions와 column_typeclasses를 읽고 출력 쓰기 인자로 전달합니다. 다음 변환은 입력에서 최대 10행을 선택하면서 두 메타데이터를 함께 전달합니다. 정렬 조건이 없으므로 특정한 10행을 선택하는 예제는 아닙니다.

from transforms.api import Input, Output, transform


@transform(
    my_output=Output("/Example Project/Outputs/recent_sample"),
    my_input=Input("/Example Project/Inputs/source_data"),
)
def compute(my_input, my_output):
    recent = my_input.dataframe().limit(10)
    my_output.write_dataframe(
        recent,
        column_descriptions=my_input.column_descriptions,
        column_typeclasses=my_input.column_typeclasses,
    )

열 이름을 변경하거나 열을 새로 계산하는 변환에서는 설명과 타입 클래스의 키도 출력 열에 맞춥니다. 메타데이터를 전달하는 것과 DataFrame의 값이나 물리 자료형을 변환하는 것은 별도의 작업입니다.