다음을 통해 공유


태스크 간에 정보 전달을 위해 태스크 값 사용

작업 값은 Databricks 작업의 태스크 간에 임의 값을 전달할 수 있는 Databricks 유틸리티 taskValues 하위 유틸리티입니다. taskValues 하위 유틸리티(dbutils.jobs.taskValues)를 참조하세요.

한 작업에서 dbutils.jobs.taskValues.set()을 사용하여 키-값 쌍을 지정한 다음 작업 이름과 키를 사용하여 후속 작업의 값을 참조할 수 있습니다.

참고 항목

dbutils.jobs.taskValues.set()dbutils.jobs.taskValues.get() 하위 유틸리티는 Python Notebook에서만 사용할 수 있습니다. 매개 변수를 지원하는 모든 작업에 대해 동적 값 참조를 사용하여 작업 값을 참조할 수 있습니다. 참조 작업 값을 참조하세요.

작업 값 설정

dbutils.jobs.taskValues.set() 하위 유틸리티를 사용하여 Python Notebook에서 작업 값을 설정합니다.

작업 값 키는 문자열이어야 합니다. Notebook에 정의된 작업 값이 여러 개 있는 경우 각 키는 고유해야 합니다.

수동으로 또는 프로그래밍 방식으로 키에 작업 값을 할당할 수 있습니다. 유효한 JSON으로 표현할 수 있는 값만 허용됩니다. 값의 JSON 표현 크기는 48KiB를 초과할 수 없습니다.

예를 들어 다음 예제에서는 키 fave_food에 대한 정적 문자열을 설정합니다.

dbutils.jobs.taskValues.set(key = "fave_food", value = "beans")

다음 예제에서는 Notebook 작업 매개 변수를 사용하여 특정 주문 번호에 대한 모든 레코드를 쿼리하고 현재 주문 상태 및 총 레코드 수를 반환합니다.

from pyspark.sql.functions import col

order_num = dbutils.widgets.get("order_num")

query = (spark.read.table("orders")
  .orderBy(col("updated"), ascending=False)
  .select(col("order_status"))
  .where(col("order_num") == order_num)
)

dbutils.jobs.taskValues.set(key = "record_count", value = query.count())
dbutils.jobs.taskValues.set(key = "order_status", value = query.take(1)[0][0])

이 패턴을 사용하여 값 목록을 전달한 다음 각 작업과 같은 다운스트림 논리를 조정하는 데 사용할 수 있습니다. 루프에서 매개 변수화 Azure Databricks 작업 태스크 실행을 참조하세요.

다음 예제에서는 제품 ID의 고유 값을 Python 목록으로 추출하고 이를 작업 값으로 설정합니다.

prod_list = list(spark.read.table("products").select("prod_id").distinct().toPandas()["prod_id"])

dbutils.jobs.taskValues.set(key = "prod_list", value = prod_list)

참조 작업 값

Databricks는 작업 값을 동적 값 참조 패턴 {{tasks.<task_name>.values.<value_name>}}을 사용하여 구성된 작업 매개 변수로 참조하는 것이 좋습니다.

예를 들어 이름이 product_inventory인 작업의 키 prod_list로 작업 값을 참조하려면 {{tasks.product_inventory.values.prod_list}} 구문을 사용합니다.

태스크 매개 변수 구성동적 값 참조란?을 참조하세요.

dbutils.jobs.taskValues.get 사용

dbutils.jobs.taskValues.get() 구문에는 업스트림 작업 이름을 지정해야 합니다. 여러 다운스트림 작업에서 작업 값을 사용할 수 있으므로 이 구문은 권장되지 않습니다. 즉, 작업 이름이 변경될 경우 수많은 업데이트가 필요합니다.

이 구문을 사용하여 필요에 따라 default 값과 debugValue를 지정할 수 있습니다. 키를 찾을 수 없는 경우 기본값이 사용됩니다. debugValue로 설정하면 Notebook을 작업으로 예약하기 전에 Notebook에서 수동 코드 개발 및 테스트 중에 사용할 정적 값을 설정할 수 있습니다.

다음 예제에서는 작업 이름 order_lookup의 키 order_status 집합의 값을 가져옵니다. Delivered 값은 대화형으로 Notebook을 실행하는 경우에만 반환됩니다.

order_status = dbutils.jobs.taskValues.get(taskKey = "order_lookup", key = "order_status", debugValue = "Delivered")

참고 항목

Databricks는 키 누락 또는 잘못 명명된 작업으로 인해 예상되는 오류 메시지의 문제를 해결하고 방지하기 어려울 수 있으므로 기본값을 설정하지 않는 것이 좋습니다.

작업 값 보기

각 실행에 대한 작업 값의 반환된 값은 작업 실행 세부 정보의 출력 패널에 표시됩니다. 태스크 실행 기록 보기를 참조하세요.