시리즈 개요
이 블로그 시리즈는 Dataform의 핵심 기능을 넘어서기 원하는 Dataform 사용자를 대상으로 합니다. 다른 것들 중에서 우리는 Dataform의 강력한 API를 탐구하고, GitHub Actions에서 자동화된 CI/CD 프로세스를 만들고, 비용을 모니터링하기 위한 파이프라인을 구축하고, 코드를 통해 config {} 블록을 수정할 것입니다.
Dataform의 API는 Dataform의 더 강력하고 덜 문서화된 기능으로 들어가기에 자연스러운 출발점입니다. API에 대한 이해는 사용자가 Dataform을 자동화된 현대 데이터 플랫폼의 모든 힘 있는 허브로 활용할 수 있게 합니다.
Dataform API 주요 개념
API는 워크플로우의 핵심 구성 요소로서 두 개의 객체를 가지고 있습니다:
-
CompilationResult- 특정 시점의 Dataform 워크스페이스의 컴파일된 상태(결과로부터)건물DAG(그래프 아키텍처)입니다. -
WorkflowInvocation- 하나의 실행CompilationResult(결과는달리는DAG(그래프 아키텍처)입니다.
CompilationResult
from google.cloud import dataform_v1
client = dataform_v1.DataformClient()
project_id = "my-project"
region = "europe-west2"
repository_id = "analytics"
workspace_id = "dev"
workspace = client.workspace_path(
project_id,
region,
repository_id,
workspace_id,
)
repository = client.repository_path(
project_id,
region,
repository_id,
)
compilation_result = dataform_v1.CompilationResult(
workspace=workspace
)
response = client.create_compilation_result(
parent=repository,
compilation_result=compilation_result,
)
print(response.name)
응답은 형태를 취합니다projects/<project_id>/locations/<region>/repositories/<repository_id>/compilationResults/<compilation_result_id> (여기서 <compilation_result_id>는 UUID v4입니다).
A CompilationResult 객체는 코드 변경이 감지될 때마다 Dataform UI에서 생성되지만, UI는 그 ID를 숨깁니다. ID는 실행 후 UI의 Executions 페이지에서 볼 수 있습니다.
CompilationResult는 Dataform 작업 공간 내의 각 작업에 대한 정보를 포함하며, 사용자가 코드를 통해 DAG를 탐색하고 각 파일의 config {} 블록과 같은 정보를 추출할 수 있게 합니다. 그런 다음 각 작업은 다음을 통해 반복할 수 있습니다:
request = dataform_v1.QueryCompilationResultActionsRequest(
name=COMPILATION_RESULT
)
response = client.query_compilation_result_actions(
request=request
)
for action in response.compilation_result_actions:
...
WorkflowInvocation
from google.cloud import dataform_v1
client = dataform_v1.DataformClient()
project_id = "my-project"
region = "europe-west2"
repository_id = "analytics"
repository = client.repository_path(
project_id , region, repository_id
)
# compilation_result comes from the previous snippet
invocation = dataform_v1.WorkflowInvocation(
compilation_result=compilation_result.name
)
response = client.create_workflow_invocation(
parent=repository,
workflow_invocation=invocation,
)
print(f'{response.name}: {response.state}')
AWorkflowInvocation는 실행이 실행될 때마다 Dataform UI에서 생성됩니다:
WorkflowInvocation에는 실행된 각 작업에 대한 정보가 포함되어 있어 사용자가 작업을 BigQuery 작업 ID에 연결하고 생성된 객체(예: 테이블 또는 뷰)를 볼 수 있습니다. 각 실행된 작업은 다음을 통해 반복할 수 있습니다:
request = dataform_v1.QueryWorkflowInvocationActionsRequest
name=WORKFLOW_INVOCATION
)
response = client.query_workflow_invocation_actions(
request=request
)
for action in response.workflow_invocation_actions:
...
그들을 함께 연결합니다
Dataform의 API의 실제 힘이 두 객체가 결합될 때 나타납니다. 일반적인 워크플로우는 이렇게 보입니다:
- 워크스페이스가 업데이트됩니다(수동으로 또는 Git을 통해),
- 워크스페이스에서
CompilationResult가 생성됩니다, - 그 컴파일에서
WorkflowInvocation가 생성됩니다, - BigQuery가 결과 DAG를 실행합니다.
이 두 가지 객체만으로 Dataform UI 외에서 빌드 및 실행을 자동화할 수 있습니다. 이는 나중에 다룰 포스트에서 CI/CD 파이프라인을 쉽게 만들 수 있게 합니다.















