Python Snowpark 저장 프로시저 및 UDF: 이벤트 테이블의 개선 사항 추적(보류 중)

주의

이 동작 변경 사항은 2024_02 번들에 있습니다.

번들의 현재 상태는 번들 기록 섹션을 참조하십시오.

이제 사용자는 Python 저장 프로시저가 다른 Python 저장 프로시저를 호출하거나 Python 저장 프로시저가 Python UDF를 호출할 때 연결된 호출의 쿼리가 연결되는 방식을 확인할 수 있습니다. 이 기능을 사용하려면 Event 테이블을 구성하고 추적을 활성화해야 합니다. Event 테이블의 TRACE:"trace_id"RECORD:"parent_span_id" 열에 표시되는 값은 다음과 같습니다.

변경 전:

연결된 Python 저장 프로시저 또는 UDF에 의해 생성된 각 범위의 trace_id 는 고유합니다. Event 테이블의 RECORD 열에 parent_span_id 필드가 없습니다. Native Apps 공급자와 컨슈머는 공유 이벤트에 대해 서로 다른 trace_ids 를 봅니다. 공급자는 해시된 버전을 봅니다.

변경 후:

연결된 Python 저장 프로시저 또는 UDF에 의해 생성된 범위의 trace_id 는 동일합니다.

연결된 Python 저장 프로시저 또는 UDF에 의해 생성된 범위는 span_idparent_span_id 사이에 상위-하위 관계를 갖습니다. Python 저장 프로시저는 길이에 관계없이 체인의 다른 저장 프로시저를 호출할 수 있지만, UDF는 SQL 문을 실행할 수 없으므로 UDF를 호출하면 체인이 종료됩니다. 그러나 추적 정보는 여전히 UDF의 범위에 전파됩니다.

사용자가 Python 저장 프로시저 또는 UDF를 직접 호출한 경우(루트) trace_id 는 임의의 ID가 되고 parent_span_id 는 없습니다. 저장 프로시저에 대한 추적이 비활성화되고 다른 저장 프로시저 또는 UDF를 호출하는 경우 하위 범위의 trace_id 는 임의의 ID가 되며 parent_span_id 가 없습니다. 즉, 하위 항목에서 추적이 다시 시작됩니다.

Native Apps 공급자와 컨슈머는 공유 Python 저장 프로시저 또는 UDF 이벤트에 대해 동일한 trace_id 를 확인하므로 더 쉽게 디버깅할 수 있습니다.

다른 Python 저장 프로시저 또는 UDF를 호출하는 Python 저장 프로시저가 포함된 애플리케이션을 공유하는 Native App 공급자는 호출 스택 및 저장 프로시저의 상위-하위 관계를 컨슈머에게 노출합니다. 이를 방지하려면 추적을 비활성화하십시오.

참조: 1520