작업 시스템 테이블 참조
Important
이 기능은 공개 미리 보기 상태입니다. 카탈로그에 표시 system
하려면 스키마를 사용하도록 설정해야 합니다. 자세한 내용은 시스템 테이블 스키마 사용을 참조 하세요.
참고 항목
스키마는 lakeflow
이전에 .로 workflow
알려져 있었습니다. 두 스키마의 콘텐츠는 동일합니다. 스키마를 lakeflow
표시하려면 스키마를 별도로 사용하도록 설정해야 합니다.
이 문서에서는 시스템 테이블을 사용하여 계정의 lakeflow
작업을 모니터링하는 방법에 대한 참조를 제공합니다. 이러한 테이블에는 동일한 클라우드 지역에 배포된 계정의 모든 작업 영역 레코드가 포함됩니다. 다른 지역의 레코드를 보려면 해당 지역에 배포된 작업 영역에서 테이블을 확인해야 합니다.
system.lakeflow
는 계정 관리자가 사용하도록 설정해야 합니다. SystemSchemas API를 사용하여 사용하도록 설정할 수 있습니다.
작업 비용 및 상태 관찰성을 위해 이러한 테이블을 사용하는 예제는 시스템 테이블을 사용하여 작업 비용 모니터링을 참조 하세요.
사용 가능한 작업 테이블
모든 작업 관련 시스템 테이블은 스키마에 system.lakeflow
있습니다. 현재 스키마는 다음 네 개의 테이블을 호스팅합니다.
jobs
: 작업의 생성, 삭제 및 기본 정보를 추적합니다.job_tasks
: 작업 작업의 생성, 삭제 및 기본 정보를 추적합니다.job_run_timeline
: 작업 실행의 시작, 끝 및 결과 상태를 기록합니다.job_task_run_timeline
: 작업 작업의 시작, 종료 및 결과 상태를 기록합니다.
작업 테이블 스키마
테이블은 jobs
느린 변경 차원 테이블입니다. 행이 변경되면 새 행이 내보내집니다. 논리적으로 이전 행을 대체합니다.
이 표에서는 다음 스키마를 사용합니다.
열 이름 | 데이터 형식 | 설명 |
---|---|---|
account_id |
string | 이 작업이 속한 계정의 ID입니다. |
workspace_id |
string | 이 작업이 속한 작업 영역의 ID입니다. |
job_id |
string | 작업의 ID입니다. 이 키는 단일 작업 영역 내에서만 고유합니다. |
name |
string | 사용자가 제공한 작업의 이름입니다. |
creator_id |
string | 작업을 만든 보안 주체의 ID입니다. |
tags |
string | 이 작업과 연결된 사용자가 제공한 사용자 지정 태그입니다. |
change_time |
timestamp | 작업이 마지막으로 수정된 시간입니다. 표준 시간대 정보는 UTC를 나타내는 값 +00:00 의 끝에 기록됩니다. |
delete_time |
timestamp | 사용자가 작업을 삭제한 시간입니다. 표준 시간대 정보는 UTC를 나타내는 값 +00:00 의 끝에 기록됩니다. |
run_as |
string | 작업 실행에 사용 권한이 사용되는 사용자 또는 서비스 주체의 ID입니다. |
작업 작업 테이블 스키마
테이블은 job_tasks
느린 변경 차원 테이블입니다. 행이 변경되면 새 행이 내보내집니다. 논리적으로 이전 행을 대체합니다.
이 표에서는 다음 스키마를 사용합니다.
열 이름 | 데이터 형식 | 설명 |
---|---|---|
account_id |
string | 이 작업이 속한 계정의 ID입니다. |
workspace_id |
string | 이 작업이 속한 작업 영역의 ID입니다. |
job_id |
string | 작업의 ID입니다. 이 키는 단일 작업 영역 내에서만 고유합니다. |
task_key |
string | 작업의 작업에 대한 참조 키입니다. 이 키는 단일 작업 내에서만 고유합니다. |
depends_on_keys |
배열 | 이 작업의 모든 업스트림 종속성의 작업 키입니다. |
change_time |
timestamp | 작업이 마지막으로 수정된 시간입니다. 표준 시간대 정보는 UTC를 나타내는 값 +00:00 의 끝에 기록됩니다. |
delete_time |
timestamp | 사용자가 작업을 삭제한 시간입니다. 표준 시간대 정보는 UTC를 나타내는 값 +00:00 의 끝에 기록됩니다. |
작업 실행 타임라인 테이블 스키마
테이블이 job_run_timeline
생성될 때 변경할 수 없으며 완료됩니다.
이 표에서는 다음 스키마를 사용합니다.
열 이름 | 데이터 형식 | 설명 |
---|---|---|
account_id |
string | 이 작업이 속한 계정의 ID입니다. |
workspace_id |
string | 이 작업이 속한 작업 영역의 ID입니다. |
job_id |
string | 작업의 ID입니다. 이 키는 단일 작업 영역 내에서만 고유합니다. |
run_id |
string | 작업 실행의 ID입니다. |
period_start_time |
timestamp | 실행 또는 기간의 시작 시간입니다. 표준 시간대 정보는 UTC를 나타내는 값 +00:00 의 끝에 기록됩니다. |
period_end_time |
timestamp | 실행 또는 기간의 종료 시간입니다. 표준 시간대 정보는 UTC를 나타내는 값 +00:00 의 끝에 기록됩니다. |
trigger_type |
string | 실행을 실행할 수 있는 트리거의 유형입니다. |
result_state |
string | 작업 실행의 결과입니다. 이 표 아래의 가능한 값을 참조하세요. |
열에 사용할 수 있는 result_state
값은 다음과 같습니다.
SUCCEEDED
FAILED
SKIPPED
CANCELLED
TIMED_OUT
ERROR
BLOCKED
열에 사용할 수 있는 trigger_type
값은 다음과 같습니다.
CONTINUOUS
CRON
FILE_ARRIVAL
ONETIME
ONETIME_RETRY
작업 작업 실행 타임라인 테이블 스키마
테이블이 job_task_run_timeline
생성될 때 변경할 수 없으며 완료됩니다.
이 표에서는 다음 스키마를 사용합니다.
열 이름 | 데이터 형식 | 설명 |
---|---|---|
account_id |
string | 이 작업이 속한 계정의 ID입니다. |
workspace_id |
string | 이 작업이 속한 작업 영역의 ID입니다. |
job_id |
string | 작업의 ID입니다. 이 키는 단일 작업 영역 내에서만 고유합니다. |
run_id |
string | 작업 실행의 ID입니다. |
period_start_time |
timestamp | 작업 또는 기간의 시작 시간입니다. 표준 시간대 정보는 UTC를 나타내는 값 +00:00 의 끝에 기록됩니다. |
period_end_time |
timestamp | 작업 또는 기간의 종료 시간입니다. 표준 시간대 정보는 UTC를 나타내는 값 +00:00 의 끝에 기록됩니다. |
task_key |
string | 작업의 작업에 대한 참조 키입니다. 이 키는 단일 작업 내에서만 고유합니다. |
compute_ids |
배열 | 비 서버리스 작업 컴퓨팅 및 작업 태스크에서 사용되는 서버리스가 아닌 SQL 웨어하우스의 ID를 포함하는 배열입니다. |
result_state |
string | 작업 태스크 실행의 결과입니다. |
열에 사용할 수 있는 result_state
값은 다음과 같습니다.
SUCCEEDED
FAILED
SKIPPED
CANCELLED
TIMED_OUT
ERROR
BLOCKED
예제 쿼리
이 섹션에는 레이크플로 테이블을 최대한 활용하는 데 사용할 수 있는 샘플 쿼리가 포함되어 있습니다.
- 최신 버전의 작업 가져오기
- 작업 영역별 일일 작업 수
- 작업 영역별 일별 작업 상태 분포
- 가장 오래 실행되는 작업 개요
- 작업 실행 분석
- 다목적 컴퓨팅에서 실행되는 작업
- 다시 시도된 작업 실행
최신 버전의 작업 가져오기
jobs
테이블과 job_tasks
테이블이 차원 테이블을 천천히 변경하기 때문에 변경될 때마다 새 레코드가 만들어집니다. 작업의 최신 버전을 얻으려면 열을 순서대로 정렬할 change_time
수 있습니다.
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM
system.lakeflow.jobs QUALIFY rn=1
작업 영역별 일일 작업 수
이 쿼리는 지난 7일 동안 작업 영역별 일일 작업 수를 가져옵니다.
SELECT
workspace_id,
COUNT(DISTINCT run_id) as job_count,
to_date(period_start_time) as date
FROM system.lakeflow.job_run_timeline
WHERE
period_start_time > CURRENT_TIMESTAMP() - INTERVAL 7 DAYS
GROUP BY ALL
작업 영역별 일별 작업 상태 분포
이 쿼리는 작업 실행 결과에 따라 배포된 지난 7일 동안 작업 영역별 일일 작업 수를 반환합니다. 쿼리는 작업이 보류 중이거나 실행 중인 상태인 레코드를 모두 제거합니다.
SELECT
workspace_id,
COUNT(DISTINCT run_id) as job_count,
result_state,
to_date(period_start_time) as date
FROM system.lakeflow.job_run_timeline
WHERE
period_start_time > CURRENT_TIMESTAMP() - INTERVAL 7 DAYS
AND result_state IS NOT NULL
GROUP BY ALL
가장 오래 실행되는 작업 개요
이 쿼리는 작업 실행의 평균 시간을 초 단위로 반환합니다. 레코드는 작업별로 구성됩니다. 상위 90개 열과 95개의 백분위수 열은 작업에서 가장 긴 실행의 평균 길이를 표시합니다.
with job_run_duration as (
SELECT
workspace_id,
job_id,
run_id,
CAST(SUM(period_end_time - period_start_time) AS LONG) as duration
FROM
system.lakeflow.job_run_timeline
WHERE
period_start_time > CURRENT_TIMESTAMP() - INTERVAL 7 DAYS
GROUP BY ALL
),
most_recent_jobs as (
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM
system.lakeflow.jobs QUALIFY rn=1
)
SELECT
t1.workspace_id,
t1.job_id,
first(t2.name, TRUE) as name,
COUNT(DISTINCT t1.run_id) as runs,
MEAN(t1.duration) as mean_seconds,
AVG(t1.duration) as avg_seconds,
PERCENTILE(t1.duration, 0.9) as p90_seconds,
PERCENTILE(t1.duration, 0.95) as p95_seconds
FROM
job_run_duration t1
LEFT OUTER JOIN most_recent_jobs t2 USING (workspace_id, job_id)
GROUP BY ALL
ORDER BY mean_seconds DESC
LIMIT 100
작업 실행 분석
이 쿼리는 특정 작업에 대한 기록 런타임을 제공합니다. 쿼리가 작동하려면 다음을 workspace_id
job_id
설정해야 합니다.
섹션의 일 INTERVAL 60 DAYS
수를 업데이트하여 분석 기간을 편집할 수도 있습니다.
with job_run_duration as (
SELECT
workspace_id,
job_id,
run_id,
min(period_start_time) as run_start,
max(period_start_time) as run_end,
CAST(SUM(period_end_time - period_start_time) AS LONG) as duration,
FIRST(result_state, TRUE) as result_state
FROM
system.lakeflow.job_run_timeline
WHERE
period_start_time > CURRENT_TIMESTAMP() - INTERVAL 60 DAYS
AND workspace_id={workspace_id}
AND job_id={job_id}
GROUP BY ALL
ORDER BY run_start DESC
),
most_recent_jobs as (
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM
system.lakeflow.jobs QUALIFY rn=1
)
SELECT
t1.workspace_id,
t1.job_id,
t2.name,
t1.run_id,
t1.run_start,
t1.run_end,
t1.duration,
t1.result_state
FROM job_run_duration t1
LEFT OUTER JOIN most_recent_jobs t2 USING (workspace_id, job_id)
다목적 컴퓨팅에서 실행되는 작업
이 쿼리는 시스템 테이블과 compute.clusters
조인되어 작업 컴퓨팅 대신 다목적 컴퓨팅에서 실행 중인 최근 작업을 반환합니다.
with clusters AS (
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, cluster_id ORDER BY change_time DESC) as rn
FROM system.compute.clusters
WHERE cluster_source="UI" OR cluster_source="API"
QUALIFY rn=1
),
job_tasks_exploded AS (
SELECT
workspace_id,
job_id,
EXPLODE(compute_ids) as cluster_id
FROM system.lakeflow.job_task_run_timeline
WHERE period_start_time >= CURRENT_DATE() - INTERVAL 30 DAY
),
all_purpose_cluster_jobs AS (
SELECT
t1.*,
t2.cluster_name,
t2.owned_by,
t2.dbr_version
FROM job_tasks_exploded t1
INNER JOIN clusters t2 USING (workspace_id, cluster_id)
)
SELECT * FROM all_purpose_cluster_jobs LIMIT 10;
다시 시도된 작업 실행
이 쿼리는 각 실행에 대한 재시도 횟수와 함께 재시도된 작업 실행 목록을 수집합니다.
with repaired_runs as (
SELECT
workspace_id, job_id, run_id, COUNT(*) - 1 as retries_count
FROM system.lakeflow.job_run_timeline
WHERE result_state IS NOT NULL
GROUP BY ALL
HAVING retries_count > 0
)
SELECT
*
FROM repaired_runs
ORDER BY retries_count DESC
LIMIT 10;