Dataform의 JavaScript 소개

이 문서는 JavaScript를 사용하여 Dataform에서 SQL 워크플로를 개발하는 방법을 이해하는 데 도움이 됩니다.

Dataform Core를 사용하면 SQLX 및 JavaScript로 SQL 워크플로 객체를 만들 수 있습니다. 선택사항이지만 SQLX와 함께 JavaScript를 사용하여 워크플로에서 유사한 요소를 반복적으로 만듭니다. 예를 들어 JavaScript를 사용하여 특정 사용자 ID가 삭제된 워크플로에서 각 테이블의 뷰를 만들 수 있습니다. JavaScript만으로 SQL 워크플로 객체를 개발할 수도 있습니다.

JavaScript를 사용하여 Dataform SQL 워크플로 개발을 시작하려면 JavaScript 문법과 다음 JavaScript 개념을 잘 알고 있어야 합니다.

  • 변수
  • 배열
  • 조건문
  • for 루프
  • 지도
  • 함수
  • 객체
  • 모듈 내보내기 및 가져오기

SQLX 파일에 JavaScript 코드 추가

인라인 또는 JavaScript 블록 내부에서 두 가지 방법으로 SQLX 파일에 JavaScript 코드를 추가할 수 있습니다.

JavaScript 블록을 사용하여 SQLX 파일에 함수 또는 상수를 정의할 수 있습니다. 인라인 JavaScript를 사용하여 SQLX 또는 SQL 쿼리를 동적으로 수정할 수 있습니다.

다음 코드 샘플은 SQLX 파일의 post_operations 블록에 인라인으로 추가된 self Dataform Core 기본 제공 JavaScript 함수를 보여줍니다.

config {type: "table"}

SELECT * FROM ...

post_operations {
  GRANT `roles/bigquery.dataViewer`
  ON
  TABLE ${self()}
  TO "group:allusers@example.com", "user:otheruser@example.com"
}

다음 코드 샘플은 JavaScript 블록에서 정의되고 SQLX 파일의 쿼리 내부에서 인라인으로 사용되는 상수를 보여줍니다.

js {
  const columnName = "foo";
}

SELECT 1 AS ${columnName} FROM "..."

JavaScript에서 코드 재사용

JavaScript 코드를 재사용하여 Dataform에서 개발을 간소화할 수 있습니다. 단일 SQLX 파일에서 JavaScript 상수 및 함수를 재사용하려면 JavaScript 블록에 캡슐화하면 됩니다. 단일 Dataform 저장소에 JavaScript 코드를 재사용하려면 include를 만들면 됩니다. 여러 Dataform 저장소에서 JavaScript 코드를 재사용하려면 패키지를 만들거나 가져오면 됩니다.

JavaScript 캡슐화를 통해 단일 SQLX 파일에서 코드 재사용

단일 SQLX 파일 내에서 재사용할 수 있는 SQL 코드의 반복 부분을 만들려면 JavaScript 블록에 함수 및 상수를 캡슐화하면 됩니다. 블록이 정의된 SQLX 파일 내에서만 JavaScript 블록에 정의된 코드를 재사용할 수 있습니다. 자세한 내용은 Dataform Core 개요를 참조하세요.

다음 코드 샘플은 JavaScript 블록에서 정의되고 SQLX 파일의 쿼리 내부에서 인라인으로 사용되는 상수 및 함수를 보여줍니다.

js {
 const foo = 1;
 function bar(number){
     return number+1;
 }
}

select
 ${foo} as one,
 ${bar(foo)} as two

include를 사용하여 단일 저장소에서 코드 재사용

include는 저장소의 전역 JavaScript 상수 또는 함수입니다. 저장소의 includes 디렉터리에 include를 정의합니다. 그런 다음 JavaScript 및 SQLX 파일의 저장소에서 이를 재사용할 수 있습니다.

다음 코드 샘플은 includes/constants.js 파일의 launch_date 상수 정의를 보여줍니다.

// filename is includes/constants.js
const launch_date = "11.11.2011";
module.exports = { launch_date };

다음 코드 샘플은 SQLX 파일의 테이블 정의 쿼리에서 참조되는 launch_date 상수를 보여줍니다.

config {type: "table"}

SELECT * FROM source_table WHERE date > ${constants.launch_date}

패키지를 사용하여 여러 저장소에서 코드 재사용

패키지는 SQL 워크플로 개발을 간소화하기 위해 여러 Dataform 저장소에서 가져오고 사용할 수 있는 JavaScript 코드 모음입니다.

Dataform에서 자체 커스텀 패키지를 만들거나 GitHub 오픈소스 Dataform 페이지에서 제공되는 오픈소스 Dataform 패키지 중 하나를 사용할 수 있습니다.

Dataform에서 오픈소스 패키지를 사용하는 예시는 Dataform에서 지연 변경 측정기준 사용을 참조하세요.

Dataform에서 패키지의 콘텐츠를 사용할 수 있으려면 Dataform 저장소에 패키지를 설치한 다음 패키지를 사용할 개별 JavaScript 또는 SQLX 파일로 가져와야 합니다. 자세한 내용은 Dataform에 패키지 설치를 참조하세요.

Dataform 저장소에 비공개 NPM 패키지를 설치하려면 패키지를 인증해야 합니다.

JavaScript에서 SQL 워크플로 만들기

SQLX 또는 JavaScript와 결합된 SQLX에서 SQL 워크플로를 개발하는 대신 JavaScript만 사용하여 .js 파일에 SQL 워크플로 객체를 만들 수 있습니다. Dataform 전역 메서드와 루프 및 상수와 같은 임의의 JavaScript ES5 코드를 사용하여 하나의 JavaScript 파일 내에서 여러 SQL 워크플로 객체를 만들 수 있습니다. 각 Dataform 전역 JavaScript 메서드에는 생성된 객체를 구성하는 데 사용할 수 있는 속성이 포함되어 있습니다.

Dataform에서 JavaScript 만 사용하여 다음 SQL 워크플로 객체를 만들 수 있습니다.

  • 데이터 소스 선언
  • 테이블
  • 수동 어설션
  • 커스텀 SQL 작업

JavaScript만 사용하여 SQL 워크플로 객체를 만드는 방법에 대한 자세한 내용은 JavaScript로 Dataform SQL 워크플로 만들기를 참조하세요.

다음 단계