다음을 통해 공유


동적 값 참조란?

동적 값 참조는 작업 및 태스크를 구성할 때 사용할 수 있는 변수 컬렉션을 설명합니다. 동적 값 참조를 사용하여 작업에 대한 조건문을 구성하거나 정보를 매개 변수 또는 인수로 전달합니다.

동적 값 참조에는 다음과 같은 정보가 포함됩니다.

  • 작업 이름, 작업 이름 및 트리거 유형을 포함하여 작업에 대해 구성된 값입니다.
  • 작업 ID, 실행 ID 및 작업 실행 시작 시간을 포함하여 작업에 대한 메타데이터를 생성했습니다.
  • 작업이 실행한 복구 시도 또는 재시도 횟수에 대한 정보입니다.
  • 지정된 작업의 결과 상태입니다.
  • 작업 매개 변수, 태스크 매개 변수, 또는 태스크 값을 사용하여 구성 및 설정된 값입니다.

동적 값 참조 사용

작업 또는 태스크를 구성할 때 동적 값 참조를 사용합니다. Notebook, 쿼리 또는 JAR과 같은 작업을 사용하여 구성된 자산에서 동적 값 참조를 직접 참조할 수 없습니다. 동적 값 참조는 컨텍스트를 작업에 전달하는 매개 변수 또는 필드를 사용하여 정의해야 합니다.

동적 값 참조는 이중 중괄호({{ }})를 사용합니다. 작업 또는 태스크가 실행되면 문자열 리터럴이 동적 값 참조를 대체합니다. 예를 들어 다음 키-값 쌍을 작업 매개 변수로 구성하는 경우

{"job_run_id": "job_{{job.run_id}}"}

실행 ID가 550315892394120이면 job_run_id의 값이 job_550315892394120로 평가됩니다.

비고

이중 중괄호의 내용은 수식으로 평가되지 않습니다. 작업이나 함수를 이중 중괄호 안에서 실행할 수 없습니다.

사용자가 제공한 값 식별자는 영숫자 및 밑줄 문자를 지원합니다. 식별자를 백틱(` `)으로 둘러싸고 특수 문자를 포함하는 이스케이프 키입니다.

존재하지 않는 동적 참조 값 및 누락된 중괄호를 포함한 구문 오류는 자동으로 무시되며 리터럴 문자열로 처리됩니다. 예를 들어 {{job.notebook_url}}알려진 네임스페이스에 속하는 잘못된 참조를 제공하는 경우 오류 메시지가 표시됩니다.

작업 UI에서 동적 값 참조 사용

동적 값 참조를 허용하는 필드는 사용 가능한 동적 값 참조를 삽입하는 바로 가기를 제공합니다. {}을(를) 클릭하여 이 목록을 보고 제공된 필드에 삽입합니다.

비고

UI는 작업 값을 참조하기 위해 키를 자동으로 완료하지 않습니다.

동적 값 참조를 허용하는 많은 필드에는 올바르게 사용하려면 추가 서식 지정이 필요합니다. 태스크 매개 변수 구성을 참조하세요.

작업 JSON에서 동적 값 참조 사용

구문을 사용하여 {{ }} Databricks CLI 및 REST API에서 사용하는 작업 JSON 정의에서 동적 값을 사용합니다.

작업 및 작업 매개 변수는 구문이 다르며 작업 매개 변수 구문은 작업 유형에 따라 다릅니다.

다음 예제에서는 동적 값 참조를 사용하여 작업 매개 변수를 구성하는 부분 JSON 구문을 보여 줍니다.

{
  "parameters": [
    {
      "name": "my_job_id",
      "default": "{{job.id}}"
    },
    {
      "name": "run_date",
      "default": "{{job.start_time.iso_date}}"
    }
  ]
}

다음 예제에서는 동적 값 참조를 사용하여 Notebook 작업 매개 변수를 구성하는 부분 JSON 구문을 보여줍니다.

{
  "notebook_task": {
    "base_parameters": {
      "workspace_id": "workspace_{{workspace.id}}",
      "file_arrival_location": "{{job.trigger.file_arrival.location}}"
    }
  }
}

작업 실행에 대한 매개 변수 검토

작업이 완료되면 실행 세부 정보 페이지의 매개 변수 아래에서 확인된 매개 변수 값을 볼 수 있습니다. 작업 실행 세부 정보 보기를 참조하세요.

지원되는 값 참조

지원되는 동적 값 참조는 다음과 같습니다.

참고 문헌 설명
{{job.id}} 작업에 할당된 고유 식별자입니다.
{{job.name}} 작업 실행 시의 작업 이름입니다.
{{job.run_id}} 작업 실행에 할당된 고유 식별자입니다.
{{job.repair_count}} 현재 작업 실행에 대한 복구 시도 횟수입니다.
{{job.start_time.<argument>}} 작업 실행이 시작된 시간(UTC 표준 시간대)을 기반으로 하는 값입니다. 반환 값은 옵션에 따라 달라집니다 argument . 날짜 및 시간 값에 대한 옵션을 참조하세요.
{{job.parameters.<name>}} 키가 <name>있는 작업 수준 매개 변수의 값입니다.
{{job.trigger.type}} 작업 실행 과정의 트리거 유형입니다. 가능한 값은 periodic, one_time, run_job_taskfile_arrival, continuoustable.
{{job.trigger.file_arrival.location}} 이 작업에 대해 파일 도착 트리거가 구성된 경우 스토리지 위치의 값입니다.
{{job.trigger.time.<argument>}} 작업 실행이 트리거된 시간(UTC 표준 시간대)을 기준으로 하는 값으로, cron 일정이 있는 작업에 대해 가장 가까운 분으로 반올림됩니다. 반환 값은 옵션에 따라 달라집니다 argument . 날짜 및 시간 값에 대한 옵션을 참조하세요.
{{task.name}} 현재 작업의 이름입니다.
{{task.run_id}} 현재 작업 실행의 고유 식별자입니다.
{{task.execution_count}} 현재 작업이 실행된 횟수(재시도 및 복구 포함)입니다.
{{task.notebook_path}} 현재 Notebook 작업의 Notebook 경로입니다.
{{tasks.<task_name>.run_id}} <task_name>에 대한 작업 실행에 할당된 고유 식별자입니다.
{{tasks.<task_name>.output.catalog_name}} 업스트림 정리실 작업의 출력 카탈로그 이름입니다.
{{tasks.<task_name>.output.schema_name}} 업스트림 클린룸 작업의 출력 스키마 이름입니다. 이 스키마는 클린룸 작업 실행의 모든 출력을 저장합니다.
{{tasks.<task_name>.result_state}} 작업의 <task_name>결과 상태입니다. 가능한 값은 success, ,failed, excludedcanceled, evictedtimedout, upstream_canceledupstream_evicted및 .upstream_failed
{{tasks.<task_name>.error_code}} 태스크 <task_name> 를 실행하는 동안 오류가 발생한 경우 태스크에 대한 오류 코드입니다. 가능한 값의 예는 RunExecutionError, ResourceNotFoundUnauthorizedError. 성공적인 작업의 경우 빈 문자열로 평가됩니다.
{{tasks.<task_name>.execution_count}} 태스크 <task_name> 가 실행된 횟수(재시도 및 복구 포함)입니다.
{{tasks.<task_name>.notebook_path}} Notebook 작업을 위한 노트북의 경로입니다 <task_name>.
{{tasks.<task_name>.values.<value_name>}} 작업 <value_name>가 설정한 키 <task_name>에 대한 작업 값입니다.
{{tasks.<task_name>.output.rows}} 업스트림 SQL 태스크 <task_name>의 출력 행입니다. 작업에 대한 For each으로 전달되는 경우 각 행은 중첩된 작업으로 반복적으로 전송됩니다. SQL 출력은 1,000개의 행과 48KB 크기로 제한됩니다. SQL 출력 옵션을 참조하세요.
{{tasks.<task_name>.output.first_row}} 업스트림 SQL 태스크 <task_name>출력의 첫 번째 행입니다. SQL 출력은 1,000행 및 48KB 크기로 제한됩니다.
{{tasks.<task_name>.output.first_row.<column_alias>}} 업스트림 SQL 태스크 출력의 첫 번째 행에 있는 열 <column_alias> 값입니다 <task_name>. SQL 출력은 1,000행 및 48KB 크기로 제한됩니다.
{{tasks.<task_name>.output.alert_state}} 업스트림 SQL 경고 태스크의 상태입니다. 값은 UNKNOWN 또는 OK 또는 TRIGGERED 중 하나입니다.
{{workspace.id}} 작업 영역에 할당된 고유 식별자입니다.
{{workspace.url}} 작업 영역의 URL입니다.
{{backfill.day}} 특정 백필 작업 실행을 위한 시간 범위 시작의 하루 동안 부분입니다. 백필(Backfill) 작업을 참조하십시오.
{{backfill.is_weekday}} 특정 백필 작업 실행에 대한 시간 범위의 시작 날짜가 평일인지를 반환 true 합니다.
{{backfill.iso_date}} 특정 백필 작업 실행에 대한 시간 범위 시작의 iso 날짜입니다.
{{backfill.iso_datetime}} 특정 백필 작업의 시간 범위 시작을 나타내는 ISO 날짜 및 시간입니다.
{{backfill.iso_weekday}} 특정 백필 작업 실행에 대한 시간 범위의 시작 요일을 나타내는 1에서 7까지의 숫자를 반환합니다.
{{backfill.month}} 특정 백필 작업 실행에 대한 시간 범위 시작 월 부분입니다.
{{backfill.timestamp_ms}} 특정 백필 작업 실행에 대한 시간 범위 시작의 타임스탬프입니다.
{{backfill.year}} 특정 백필 작업 실행에 대한 시간 범위의 시작 연도 부분입니다.

모든 작업에서 이러한 참조를 설정할 수 있습니다. 태스크 매개 변수 구성을 참조하세요. 백필 매개 변수는 백필 작업을 만들 때만 사용할 수 있습니다.

작업 값이 있는 작업의 작업 간에 매개 변수를 전달할 수도 있습니다. 작업 값을 사용하여 작업간에 정보를 전달하는 방법을 참조하십시오.

날짜 및 시간 값에 대한 옵션

다음 인수를 사용하여 시간 기반 매개 변수 변수의 반환 값을 지정합니다. 모든 반환 값은 UTC 표준 시간대의 타임스탬프를 기반으로 합니다.

논쟁 설명
iso_weekday 타임스탬프의 요일을 나타내는 1에서 7까지의 숫자를 반환합니다.
is_weekday 타임스탬프가 평일인지를 반환 true 합니다.
iso_date ISO 형식으로 날짜를 반환합니다.
iso_datetime 날짜 및 시간을 ISO 형식으로 반환합니다.
year 타임스탬프의 연도 부분을 반환합니다.
month 타임스탬프의 월 부분을 반환합니다.
day 타임스탬프에서 날짜 부분을 반환합니다.
hour 타임스탬프의 시간 부분을 반환합니다.
minute 타임스탬프의 분 부분을 반환합니다.
second 타임스탬프의 두 번째 부분을 반환합니다.
timestamp_ms 타임스탬프를 밀리초 단위로 반환합니다.

SQL 출력 옵션

동적 값을 사용하여 업스트림 SQL 태스크의 출력에 액세스할 수 있습니다.

예를 들어 다음 SQL을 사용하여 호출 sales_by_year 된 SQL 작업이 있는 경우 최종 SELECT 문을 기반으로 출력을 만듭니다.

-- Generate example data
CREATE OR REPLACE TEMP VIEW example_sales AS
SELECT * FROM VALUES
  (2020, 12),
  (2021, 23),
  (2022, 47),
  (2023, 15),
  (2024, 22)
AS example_sales(sales_year, num_sales);

-- Query example data
SELECT sales_year, num_sales FROM example_sales;

{{tasks.<task_name>.output.<argument>}} 동적 값을 사용하여 작업 구성을 만들어 다운스트림 작업에서 출력을 참조할 수 있습니다.

작업에서 For each 행은 중첩된 작업으로 반복적으로 전송됩니다. 이 예제에서는 작업의 For each을 중첩된 {{tasks.sales_by_year.output.rows}} 작업에 설정하면, {{input.<column_alias>}} 구문을 통해 각 행의 값을 매개 변수로 반복적으로 보낼 수 있습니다. 중첩된 작업 구성에서 year:{{input.sales_year}}sales:{{input.num_sales}}의 키-값 쌍을 사용하여 두 개의 매개 변수를 만들 수 있습니다. 중첩된 작업이 SQL 작업이라고 가정하면 다음과 같은 쿼리를 사용하여 코드의 값을 참조할 수 있습니다.

-- Example: access data from previous query:
SELECT concat('In ', :year, ' we had ', :sales, ' sales.')

For each 작업 및 해당 중첩 작업에 대한 자세한 내용은 For each 작업을 사용하여 루프에서 다른 작업을 실행하는 방법을 참조하십시오.

비고

SQL 쿼리 출력은 7일 동안 유지됩니다. 작업이 일시 중지된 경우(예: 실패 시) 7일이 지난 후 다시 시작된 경우 SQL 쿼리 출력을 사용할 수 없습니다.

더 이상 사용이 권장되지 않는 동적 값 참조

다음 동적 값 참조는 더 이상 사용되지 않습니다. 권장되는 대체 참조는 각 변수에 대한 설명에 포함됩니다.

변수 설명
{{job_id}} 작업에 할당된 고유 식별자입니다. job.id를 대신 사용하세요.
{{run_id}} 작업 실행에 할당된 고유 식별자입니다. task.run_id를 대신 사용하세요.
{{start_date}} 작업 실행이 시작된 날짜입니다. 형식은 UTC 표준 시간대의 YYYY-MM-DD. job.start_time.<argument>를 대신 사용하세요.
{{start_time}} 클러스터를 만들고 준비한 후 실행이 시작되는 타임스탬프입니다. UNIX epoch 이후의 밀리초 형식은 System.currentTimeMillis()에 의해 반환된 UTC 표준 시간대의 것입니다. job.start_time.<format>를 대신 사용하세요.
{{task_retry_count}} 첫 번째 시도가 실패할 경우 작업을 실행하려고 시도한 재시도 횟수입니다. 값은 첫 번째 시도에 대해 0이고 각 재시도에 따라 증가합니다. task.execution_count를 대신 사용하세요.
{{parent_run_id}} 여러 태스크가 있는 작업의 실행에 할당된 고유 식별자입니다. job.run_id를 대신 사용하세요.
{{task_key}} 여러 작업이 있는 작업의 일부인 작업에 할당된 고유 이름입니다. task.name를 대신 사용하세요.