기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon Connect Analytics 데이터 레이크에서 데이터 예약
참고
Analytics 데이터 레이크에 액세스하고 공유할 데이터를 구성하는 방법에는 두 가지가 있습니다. 옵션 1 -를 사용하여 예약 테이블에 액세스할 수 없는 경우 옵션 2 - CLI 또는 CloudShell 사용으로 AWS Management Console이동합니다.
유의해야 할 중요 사항
-
테이블은 버전이 지정된 레코드를 저장합니다. 항목의 각 새 버전이 테이블에 추가됩니다.
-
항목의 최신 버전일수록 _version 번호가 높아집니다. 항목의 최신 버전을 가져오려면 레코드의 최신 버전을 쿼리해야 합니다. 다음은 모든 최신 교대 근무 활동을 선택하는 쿼리의 예입니다.
SELECT *
FROM
(
SELECT
RANK() OVER (PARTITION BY shift_activity_arn ORDER BY shift_activity_version DESC) recency
, *
FROM
shift_activities
) t
WHERE (recency = 1)
-
각 항목의 최신 버전으로 논리적 보기를 생성할 수 있습니다. 그런 다음이 보기에 대해 쿼리를 실행할 수 있습니다. 최신 버전의 데이터만 필요한 쿼리를 자주 실행하는 경우 이러한 뷰를 생성하면 쿼리가 간소화됩니다. 다음은 최신 교대 근무 활동을 생성하는 방법에 대한 예제 쿼리입니다.
CREATE OR REPLACE VIEW "latest_shift_activities" AS
SELECT *
FROM
(
SELECT
RANK() OVER (PARTITION BY shift_activity_arn ORDER BY shift_activity_version DESC) recency
, *
FROM
shift_activities
) t
WHERE (recency = 1)
-
위와 같은 뷰가 있으면 다음을 사용하여 뷰를 직접 쿼리할 수 있습니다.
latest_shift_activities에서 선택*
데이터 형식 정의
직원 일정 프로필
테이블 이름: staff_scheduling_profile
복합 기본 키: {instance_id, agent_arn, staff_scheduling_profile_version}
열 | 유형 | 설명 | |
---|---|---|---|
1 | instance-id | 문자열 | Amazon Connect 인스턴스의 ID입니다. |
2 | agent_arn | 문자열 | 에이전트의 ARN |
3 | staff_scheduling_profile_version | bigint | 직원 일정 프로필 버전 |
4 | instance_arn | 문자열 | Amazon Connect 인스턴스의 ARN |
5 | 인력_그룹_arn | 문자열 | 에이전트가 할당된 인력 배치 그룹의 ARN |
6 | start_timestamp | 타임스탬프 | 직원 규칙에 구성된 에이전트의 StartTimestamp(이 타임스탬프 이후에만 일정이 생성됨) |
7 | end_timestamp | 타임스탬프 | 직원 규칙에 구성된 에이전트에 대한 EndTimestamp(이 타임스탬프 이후에는 일정이 생성되지 않음) |
8 | shift_profile_arn | 문자열 | 에이전트가 할당된 교대 근무 프로필의 ARN이 직원 규칙에 구성됨 |
9 | timezone | 문자열 | 에이전트에 대해 구성된 시간대 |
10 | is_deleted | boolean | 에이전트가 삭제된 경우 True로 설정합니다. 그렇지 않으면 False로 설정됩니다. |
11 | last_updated_timestamp | 타임스탬프 | 직원 일정 프로필이 created/updated/deleted 시점의 타임스탬프 |
12 | data_lake_last_processed_timestamp | 타임스탬프 | 데이터 레이크가 레코드를 마지막으로 터치한 시간을 보여주는 타임스탬프입니다. 여기에는 변환 및 채우기가 포함될 수 있습니다. 이 필드는 데이터 신선도를 안정적으로 결정하는 데 사용할 수 없습니다. |
교대 근무 활동
테이블 이름: shift_activities
복합 기본 키: {instance_id, shift_activity_arn, shift_activity_version}
열 | 유형 | 설명 | |
---|---|---|---|
1 | instance-id | 문자열 | Amazon Connect 인스턴스의 ID입니다. |
2 | shift_activity_arn | 문자열 | 교대 근무 활동의 ARN |
3 | shift_activity_version | bigint | 교대 근무 활동 버전 |
4 | instance_arn | 문자열 | Amazon Connect 인스턴스의 ARN |
5 | shift_activity_name | 문자열 | 교대 근무 활동 이름 |
6 | type | 문자열 | 교대 근무 활동의 유형입니다. 가능한 값은 생산, 비생산 및 휴가입니다. |
7 | sub_type | 문자열 | 교대 근무 활동의 SubType이 항목은 NON_PRODUCTIVE 유형 활동에만 유효합니다. 가능한 값은 BREAK_OR_MEAL과 NONE입니다. |
8 | is_adherence_tracked | boolean | 교대 근무 활동이 준수 추적을 위해 구성된 경우 True로 설정합니다. 그렇지 않으면 False로 설정됩니다. |
9 | is_paid | boolean | 교대 근무 활동이 유료로 구성된 경우 True로 설정합니다. 그렇지 않으면 False로 설정됩니다. |
10 | is_deleted | boolean | 교대 근무 활동이 삭제되면 True로 설정합니다. 그렇지 않으면 False로 설정됩니다. |
11 | last_updated_timestamp | 타임스탬프 | 교대 근무 활동이 created/updated/deleted 시점의 타임스탬프 |
12 | data_lake_last_processed_timestamp | 타임스탬프 | 데이터 레이크가 레코드를 마지막으로 터치한 시간을 보여주는 타임스탬프입니다. 여기에는 변환 및 채우기가 포함될 수 있습니다. 이 필드는 데이터 신선도를 안정적으로 결정하는 데 사용할 수 없습니다. |
교대 근무 프로필
테이블 이름: shift_profiles
복합 기본 키: {instance_id, shift_profile_arn, shift_profile_version}
열 | 유형 | 설명 | |
---|---|---|---|
1 | instance-id | 문자열 | Amazon Connect 인스턴스의 ID입니다. |
2 | shift_profile_arn | 문자열 | 교대 근무 프로필의 ARN |
3 | shift_profile_version | bigint | 교대 근무 프로필 버전 |
4 | instance_arn | 문자열 | Amazon Connect 인스턴스의 ARN |
5 | shift_profile_이름 | 문자열 | 교대 근무 프로필의 이름 |
6 | is_deleted | boolean | Shift Profile이 삭제되면 True로 설정합니다. 그렇지 않으면 False로 설정됩니다. |
7 | last_updated_timestamp | 타임스탬프 | 교대 근무 프로필이 created/updated/deleted 시점의 타임스탬프 |
8 | data_lake_last_processed_timestamp | 타임스탬프 | 데이터 레이크가 레코드를 마지막으로 터치한 시간을 보여주는 타임스탬프입니다. 여기에는 변환 및 채우기가 포함될 수 있습니다. 이 필드는 데이터 신선도를 안정적으로 결정하는 데 사용할 수 없습니다. |
인력 배치 그룹
테이블 이름: staffing_groups
복합 기본 키: {instance_id, staffing_group_arn, staffing_group_version}
열 | 유형 | 설명 | |
---|---|---|---|
1 | instance-id | 문자열 | Amazon Connect 인스턴스의 ID입니다. |
2 | 인력_그룹_arn | 문자열 | 인력 배치 그룹의 ARN |
3 | 인력 배치_그룹_버전 | bigint | 인력 배치 그룹 버전 |
4 | instance_arn | 문자열 | Amazon Connect 인스턴스의 ARN |
5 | 인력_그룹_이름 | 문자열 | 인력 배치 그룹의 이름 |
6 | is_deleted | boolean | 인력 배치 그룹이 삭제된 경우 True로 설정합니다. 그렇지 않으면 False로 설정됩니다. |
7 | last_updated_timestamp | 타임스탬프 | 인력 배치 그룹이 created/updated/deleted 시점의 타임스탬프 |
8 | data_lake_last_processed_timestamp | 타임스탬프 | 데이터 레이크가 레코드를 마지막으로 터치한 시간을 보여주는 타임스탬프입니다. 여기에는 변환 및 채우기가 포함될 수 있습니다. 이 필드는 데이터 신선도를 안정적으로 결정하는 데 사용할 수 없습니다. |
인력 배치 그룹 - 예측 그룹
테이블 이름: staffing_group_forecast_groups
복합 기본 키: {instance_id, staffing_group_arn, staffing_group_version, forecast_group_arn}
이 테이블은 staffing_group_arn 및 staffing_group_version에서 staffing_groups 테이블과 조인하여 쿼리해야 합니다.
열 | 유형 | 설명 | |
---|---|---|---|
1 | instance-id | 문자열 | Amazon Connect 인스턴스의 ID입니다. |
2 | 인력_그룹_arn | 문자열 | 인력 배치 그룹의 ARN |
3 | 인력 배치_그룹_버전 | bigint | 인력 배치 그룹 버전 |
4 | forecast_group_arn | 문자열 | 인력 배치 그룹과 연결된 Forecast 그룹의 ARN |
5 | instance_arn | 문자열 | Amazon Connect 인스턴스의 ARN |
6 | is_deleted | boolean | StaffingGroup-ForecastGroup 연결이 유효한 경우 False로 설정합니다. |
7 | last_updated_timestamp | 타임스탬프 | 인력 배치 그룹이 생성/업데이트된 시점의 타임스탬프 |
8 | data_lake_last_processed_timestamp | 타임스탬프 | 데이터 레이크가 레코드를 마지막으로 터치한 시간을 보여주는 타임스탬프입니다. 여기에는 변환 및 채우기가 포함될 수 있습니다. 이 필드는 데이터 신선도를 안정적으로 결정하는 데 사용할 수 없습니다. |
인력 배치 그룹 - 감독자
테이블 이름: staffing_group_supervisors
복합 기본 키: {instance_id, staffing_group_arn, staffing_group_version, supervisor_arn}
이 테이블은 staffing_group_arn 및 staffing_group_version에서 staffing_groups 테이블과 조인하여 쿼리해야 합니다.
열 | 유형 | 설명 | |
---|---|---|---|
1 | instance-id | 문자열 | Amazon Connect 인스턴스의 ID입니다. |
2 | 인력_그룹_arn | 문자열 | 인력 배치 그룹의 ARN |
3 | 인력_그룹_버전 | bigint | 인력 배치 그룹 버전 |
4 | 감독자_arn | 문자열 | 인력 배치 그룹에 연결된 감독자의 에이전트 ARN |
5 | instance_arn | 문자열 | Amazon Connect 인스턴스의 ARN |
6 | is_deleted | boolean | StaffingGroup-ForecastGroup 연결이 유효한 경우 False로 설정합니다. |
7 | last_updated_timestamp | 타임스탬프 | 인력 배치 그룹이 생성/업데이트된 시점의 타임스탬프 |
8 | data_lake_last_processed_timestamp | 타임스탬프 | 데이터 레이크가 레코드를 마지막으로 터치한 시간을 보여주는 타임스탬프입니다. 여기에는 변환 및 채우기가 포함될 수 있습니다. 이 필드는 데이터 신선도를 안정적으로 결정하는 데 사용할 수 없습니다. |
직원 교대 근무
테이블 이름: staff_shifts
복합 기본 키: {instance_id, shift_id, shift_version}
열 | 유형 | 설명 | |
---|---|---|---|
1 | instance-id | 문자열 | Amazon Connect 인스턴스의 ID입니다. |
2 | shift_id | 문자열 | 교대 근무의 ID |
3 | shift_version | bigint | 교대 근무 버전 |
4 | instance_arn | 문자열 | Amazon Connect 인스턴스의 ARN |
5 | agent_arn | 문자열 | 에이전트의 ARN |
6 | shift_start_timestamp | 타임스탬프 | 교대 근무 시작 시 타임스탬프 |
7 | shift_end_timestamp | 타임스탬프 | 교대 근무 종료 시 타임스탬프 |
8 | created_timestamp | 타임스탬프 | 교대 근무가 생성된 시점의 타임스탬프 |
9 | is_deleted | boolean | Shift가 삭제되면 True로 설정합니다. 그렇지 않으면 False로 설정됩니다. |
10 | last_updated_timestamp | 타임스탬프 | 교대 근무가 created/updated/deleted 시점의 타임스탬프 |
11 | data_lake_last_processed_timestamp | 타임스탬프 | 데이터 레이크가 레코드를 마지막으로 터치한 시간을 보여주는 타임스탬프입니다. 여기에는 변환 및 채우기가 포함될 수 있습니다. 이 필드는 데이터 신선도를 안정적으로 결정하는 데 사용할 수 없습니다. |
직원 교대 근무 활동
테이블 이름: staff_shift_activities
복합 기본 키: {instance_id, shift_id, shift_version, activity_id}
이 테이블은 shift_id 및 shift_version에서 staff_shifts 테이블과 조인하여 쿼리해야 합니다.
열 | 유형 | 설명 | |
---|---|---|---|
1 | instance-id | 문자열 | Amazon Connect 인스턴스의 ID입니다. |
2 | shift_id | 문자열 | 교대 근무의 ID |
3 | shift_version | bigint | 교대 근무 버전 |
4 | activity_id | 문자열 | 활동의 ID |
5 | instance_arn | 문자열 | Amazon Connect 인스턴스의 ARN |
6 | activity_start_timestamp | 타임스탬프 | 활동이 시작될 때 타임스탬프 |
7 | activity_end_timestamp | 타임스탬프 | 활동이 종료될 때 타임스탬프 |
8 | shift_activity_arn | 문자열 | 교대 근무 활동의 ARN입니다. shift_activity_arn이 null이면 '작업' 활동을 나타냅니다. |
9 | activity_status | 문자열 | 활동 상태입니다. 활동이 휴가와 겹치는 경우 비활성으로 설정됩니다. |
10 | is_overtime | boolean | 활동이 초과 근무의 일부인 경우 True로 설정합니다. 그렇지 않으면 False로 설정됩니다. |
11 | is_deleted | boolean | 교대 근무 활동이 유효한 경우 False로 설정 |
12 | last_updated_timestamp | 타임스탬프 | 교대 근무가 생성/업데이트된 시점의 타임스탬프 |
13 | data_lake_last_processed_timestamp | 타임스탬프 | 데이터 레이크가 레코드를 마지막으로 터치한 시간을 보여주는 타임스탬프입니다. 여기에는 변환 및 채우기가 포함될 수 있습니다. 이 필드는 데이터 신선도를 안정적으로 결정하는 데 사용할 수 없습니다. |
직원 휴가
테이블 이름: staff_timeoffs
복합 기본 키: {instance_id, timeoff_id, agent_arn, timeoff_version}
열 | 유형 | 설명 | |
---|---|---|---|
1 | instance-id | 문자열 | Amazon Connect 인스턴스의 ID입니다. |
2 | timeoff_id | 문자열 | 휴가의 ID |
3 | agent_arn | 문자열 | 에이전트의 ARN |
4 | timeoff_version | bigint | 휴가 버전 |
5 | instance_arn | 문자열 | Amazon Connect 인스턴스의 ARN |
6 | timeoff_type | 문자열 | 휴가 유형입니다. 가능한 값은 TIME_OFF 및 VOLUNTARY_TIME_OFF입니다. |
7 | timeoff_start_timestamp | 타임스탬프 | 휴가 시작 시 타임스탬프 |
8 | timeoff_end_timestamp | 타임스탬프 | 휴가 종료 시 타임스탬프 |
9 | timeoff_status | 문자열 | 휴가 상태입니다. 가능한 값은 PENDING_CREATE, PENDING_UPDATE, PENDING_CANCEL, PENDING_ACCEPT, PENDING_APPROVE, PENDING_DECLINE, APPROVED, ACCEPTED, REJECTED, CANCELLED, WAITING_ACCEPT 및 WAITING_APPROVE WAITING 상태가고, 이는 휴가가 사용자 작업 대기 중임을 나타냅니다. 대기 중 상태는 휴가가 사용자 작업의 시스템 처리를 기다리고 있음을 나타냅니다. |
10 | shift_activity_arn | 문자열 | 휴가에 사용되는 교대 근무 활동의 ARN |
11 | effective_timeoff_hours | double | 총 유효 휴가 시간입니다. 유효 휴가 시간은 휴가 공제 로직을 기반으로 계산됩니다. 이는 TIME_OFF 유형에 대해서만 설정됩니다. |
12 | last_updated_timestamp | 타임스탬프 | 휴가가 created/updated/deleted 시점의 타임스탬프 |
13 | data_lake_last_processed_timestamp | 타임스탬프 | 데이터 레이크가 레코드를 마지막으로 터치한 시간을 보여주는 타임스탬프입니다. 여기에는 변환 및 채우기가 포함될 수 있습니다. 이 필드는 데이터 신선도를 안정적으로 결정하는 데 사용할 수 없습니다. |
직원 휴가 간격
테이블 이름: staff_timeoff_intervals
복합 기본 키: {instance_id, timeoff_id, timeoff_version, interval_id}
이 테이블은 timeoff_id 및 timeoff_version에서 staff_timeoffs 테이블과 조인하여 쿼리해야 합니다.
열 | 유형 | 설명 | |
---|---|---|---|
1 | instance-id | 문자열 | Amazon Connect 인스턴스의 ID입니다. |
2 | timeoff_id | 문자열 | 휴가의 ID |
3 | timeoff_version | bigint | 휴가 버전 |
4 | interval_id | 문자열 | 휴가 간격의 ID |
5 | instance_arn | 문자열 | Amazon Connect 인스턴스의 ARN |
6 | timeoff_interval_start_timestamp | 타임스탬프 | 특정 휴가 간격이 시작될 때의 타임스탬프 |
7 | timeoff_interval_end_timestamp | 타임스탬프 | 특정 휴가 간격이 종료될 때 타임스탬프 |
8 | interval_effective_timeoff_hours | double | 이 특정 휴가 간격에 대한 유효 휴가 시간입니다. 유효 휴가 시간은 휴가 공제 로직을 기반으로 계산됩니다. |
9 | last_updated_timestamp | 타임스탬프 | 휴가가 created/updated/deleted 시점의 타임스탬프 |
10 | data_lake_last_processed_timestamp | 타임스탬프 | 데이터 레이크가 레코드를 마지막으로 터치한 시간을 보여주는 타임스탬프입니다. 여기에는 변환 및 채우기가 포함될 수 있습니다. 이 필드는 데이터 신선도를 안정적으로 결정하는 데 사용할 수 없습니다. |
사용자
테이블 이름: 사용자
복합 기본 키: user_id
열 | 유형 | 설명 | |
---|---|---|---|
1 | user_id | 문자열 | 사용자 계정의 식별자입니다. |
2 | user_arn | 문자열 | 사용자 계정의 ARN입니다. |
3 | directory_user_id | 문자열 | 아이덴티티 관리에 사용되는 디렉터리의 사용자 계정 식별자입니다. |
4 | agent_hierarchy_group_id | 문자열 | 사용자의 계층 구조 그룹 식별자입니다. |
5 | agent_hierarchy_group_arn | 문자열 | 사용자에 대한 계층 구조의 ARN입니다. |
6 | agent_email | 문자열 | 사용자의 이메일 주소입니다. |
7 | agent_secondary_email | 문자열 | 사용자의 보조 이메일 주소입니다. |
8 | first_name | 문자열 | 에이전트의 이름입니다. |
9 | last_name | 문자열 | 에이전트의 성입니다. |
10 | 모바일 | 문자열 | 사용자의 휴대폰 번호입니다. |
11 | agent_username | 문자열 | Amazon Connect 사용자 계정에 입력된 에이전트의 이름입니다. |
12 | instance-id | 문자열 | AWS Connect 인스턴스의 ID입니다. |
13 | instance_arn | 문자열 | AWS Connect 인스턴스의 ARN입니다. |
14 | agent_routing_profile_id | 문자열 | 에이전트의 라우팅 프로필 ID입니다. |
15 | agent_routing_profile_arn | 문자열 | 에이전트에 대한 라우팅 프로필의 ARN입니다. |
16 | agent_security_profile_ids | 배열<문자열> | 사용자의 보안 프로필 IDs입니다. |
17 | agent_security_profile_arns | 배열<문자열> | 사용자에 대한 보안 프로필의 ARNs입니다. |
18 | last_modified_region | 문자열 | 이 리소스가 마지막으로 수정된 AWS 리전 입니다. |
19 | last_modified_timestamp | 타임스탬프 | 이 리소스가 마지막으로 수정된 시점의 타임스탬프입니다. |
20 | 사후_연락처_작업_시간_한도 | int | 호출 작업 후(ACW) 제한 시간 설정(초)입니다. |
21 | auto_accept | boolean | 자동 수락 설정입니다. |
22 | desk_phone_number | 문자열 | 사용자의 회사 전화번호입니다. |
23 | phone_type | 문자열 | 전화 유형입니다. |
24 | is_active | boolean | 에이전트가 존재하는지 또는 삭제되었는지 여부. |
라우팅 프로필
테이블 이름: routing_profiles
복합 기본 키: agent_routing_profile_id
열 | 유형 | 설명 | |
---|---|---|---|
1 | agent_routing_profile_id | 문자열 | 라우팅 프로필의 식별자입니다. |
2 | agent_routing_profile_arn | 문자열 | 라우팅 프로필의 ARN입니다. |
3 | routing_profile_name | 문자열 | 라우팅 프로필 이름입니다. |
4 | instance-id | 문자열 | AWS Connect 인스턴스의 ID입니다. |
5 | instance_arn | 문자열 | AWS Connect 인스턴스의 ARN입니다. |
6 | agent_availability_timer | 문자열 | 이 라우팅 프로필을 가진 에이전트가 마지막 인바운드 고객 응대 이후 가장 긴 유휴 시간 또는 시간을 기준으로 라우팅 순서를 계산할지 여부입니다. |
7 | default_outbound_queue_id | 문자열 | 라우팅 프로필의 기본 아웃바운드 대기열입니다. |
8 | routing_profile_description | 문자열 | 라우팅 프로필에 대한 설명입니다. |
9 | last_modified_region | 문자열 | 이 리소스가 마지막으로 수정된 AWS 리전 입니다. |
10 | last_modified_timestamp | 타임스탬프 | 이 리소스가 마지막으로 수정된 시점의 타임스탬프입니다. |
11 | is_active | boolean | 에이전트가 존재하는지 또는 삭제되었는지 여부. |
데이터 스키마

샘플 쿼리
1. 특정 Forecast 그룹에서 작업하는 에이전트의 모든 예약된 교대 근무 활동을 가져오는 쿼리
forecast_group_name이 'AnyDepartmentForecastGroup'인 agent_scheduled_shift_activities_view에서 *를 선택합니다.
아래 단계에 따라 위에서 언급한agent_scheduled_shift_activities_view를 생성합니다.
1단계: 감독자 이름을 가져올 뷰 생성
CREATE OR REPLACE VIEW "latest_supervisor_names_view" AS
SELECT
staffing_group_arn
, array_agg(supervisor_name ORDER BY supervisor_name ASC) supervisor_names
FROM
(
SELECT
s.staffing_group_arn
, CONCAT(u.first_name, ' ', u.last_name) supervisor_name
FROM
((
SELECT
staffing_group_arn
, supervisor_arn
FROM
(
SELECT
*
, RANK() OVER (PARTITION BY staffing_group_arn ORDER BY staffing_group_version DESC) recency
FROM
staffing_group_supervisors
WHERE (instance_id = 'YourAmazonConnectInstanceId')
) t
WHERE (recency = 1)
) s
INNER JOIN USERS u ON (s.supervisor_arn = u.user_arn))
)
GROUP BY staffing_group_arn
2단계: 에이전트와 연결된 인력 배치 그룹 및 예측 그룹을 가져오는 뷰 생성
CREATE OR REPLACE VIEW "latest_agent_staffing_group_forecast_group_view" AS
WITH
latest_staff_scheduling_profile AS (
SELECT
agent_arn
, staffing_group_arn
, last_updated_timestamp
FROM
(
SELECT
*
, RANK() OVER (PARTITION BY agent_arn ORDER BY staff_scheduling_profile_version DESC) recency
FROM
staff_scheduling_profile
WHERE ((instance_id = 'YourAmazonConnectInstanceId') AND (is_deleted = false))
) t
WHERE (recency = 1)
)
, latest_staffing_groups AS (
SELECT
staffing_group_name
, staffing_group_arn
FROM
(
SELECT
*
, RANK() OVER (PARTITION BY staffing_group_arn ORDER BY staffing_group_version DESC) recency
FROM
staffing_groups
WHERE (instance_id = 'YourAmazonConnectInstanceId')
) t
WHERE (recency = 1)
)
, latest_forecast_groups AS (
SELECT
forecast_group_arn
, forecast_group_name
FROM
(
SELECT
*
, RANK() OVER (PARTITION BY forecast_group_arn ORDER BY forecast_group_version DESC) recency
FROM
forecast_groups
WHERE (instance_id = 'YourAmazonConnectInstanceId')
) t
WHERE (recency = 1)
)
, latest_staffing_group_forecast_groups AS (
SELECT
staffing_group_arn
, forecast_group_arn
FROM
(
SELECT
*
, RANK() OVER (PARTITION BY staffing_group_arn ORDER BY staffing_group_version DESC) recency
FROM
staffing_group_forecast_groups
WHERE (instance_id = 'YourAmazonConnectInstanceId')
) t
WHERE (recency = 1)
)
SELECT
ssp.agent_arn
, U.agent_username AS username
, U.agent_routing_profile_id AS routing_profile_id
, CONCAT(u.first_name, ' ', u.last_name) agent_name
, fg.forecast_group_arn
, fg.forecast_group_name
, sg.staffing_group_arn
, sg.staffing_group_name
FROM
latest_staff_scheduling_profile ssp
INNER JOIN latest_staffing_groups sg ON ssp.staffing_group_arn = sg.staffing_group_arn
INNER JOIN latest_staffing_group_forecast_groups sgfg ON ssp.staffing_group_arn = sgfg.staffing_group_arn
INNER JOIN latest_forecast_groups fg ON fg.forecast_group_arn = sgfg.forecast_group_arn
INNER JOIN USERS u ON ssp.agent_arn = u.user_arn
3단계: 최신 교대 근무 활동 가져오기
CREATE OR REPLACE VIEW "latest_shift_activities_view" AS
SELECT
shift_activity_arn
, shift_activity_name
, shift_activity_version
, type
, sub_type
, is_adherence_tracked
, is_paid
, last_updated_timestamp
FROM
(
SELECT
*
, RANK() OVER (PARTITION BY shift_activity_arn ORDER BY shift_activity_version DESC) recency
FROM
shift_activities
WHERE (instance_id = 'YourAmazonConnectInstanceId')
) t
WHERE (recency = 1)
4단계: 에이전트의 예약된 교대 근무 활동을 가져오는 뷰 생성
CREATE OR REPLACE VIEW "agent_scheduled_shift_activities_view" AS
WITH
latest_staff_shifts AS (
SELECT
agent_arn
, shift_id
, shift_version
, shift_start_timestamp
, shift_end_timestamp
, created_timestamp
, last_updated_timestamp
, data_lake_last_processed_timestamp
, recency
FROM
(
SELECT
RANK() OVER (PARTITION BY shift_id ORDER BY shift_version DESC) recency
, *
FROM
staff_shifts sa
WHERE (instance_id = 'YourAmazonConnectInstanceId')
) t
WHERE ((recency = 1) AND (is_deleted = false))
)
SELECT
asgfg.forecast_group_name
, array_join(sn.supervisor_names, ',') supervisor_names
, s.agent_arn
, u.first_name
, u.last_name
, asgfg.staffing_group_name
, ssa.activity_id
, (CASE WHEN (ssa.shift_activity_arn IS NULL) THEN COALESCE(sa.shift_activity_name, 'Work') ELSE sa.shift_activity_name END) shift_activity_name
, s.shift_start_timestamp
, s.shift_end_timestamp
, (CASE WHEN (ssa.shift_activity_arn IS NULL) THEN COALESCE(sa.type, 'PRODUCTIVE') ELSE sa.type END) type
, (CASE WHEN (ssa.shift_activity_arn IS NULL) THEN COALESCE(sa.is_paid, true) ELSE sa.is_paid END) is_paid
, ssa.activity_start_timestamp
, ssa.activity_end_timestamp
, ssa.last_updated_timestamp
, ssa.data_lake_last_processed_timestamp
, u.agent_username as username
, u.agent_routing_profile_id as routing_profile_id
FROM
staff_shift_activities ssa
INNER JOIN latest_staff_shifts s ON s.shift_id = ssa.shift_id AND s.shift_version = ssa.shift_version
INNER JOIN USERS u ON s.agent_arn = u.user_arn
INNER JOIN latest_agent_staffing_group_forecast_group_view asgfg ON s.agent_arn = asgfg.agent_arn
LEFT JOIN latest_shift_activities_view sa ON sa.shift_activity_arn = ssa.shift_activity_arn
INNER JOIN latest_supervisor_names_view sn ON sn.staffing_group_arn = asgfg.staffing_group_arn
WHERE (ssa.is_deleted = false) AND (COALESCE(ssa.activity_status, ' ') <> 'INACTIVE') AND (ssa.instance_id = 'YourAmazonConnectInstanceId')
2. 특정 Forecast 그룹에 있는 에이전트의 모든 휴가 요청을 가져오는 쿼리
forecast_group_name이 'AnyDepartmentForecastGroup'인 agent_timeoff_report_view에서 *를 선택합니다.
아래 쿼리를 사용하여 위에서 언급한agent_timeoff_report_view를 생성합니다.
CREATE OR REPLACE VIEW "agent_timeoff_report_view" AS
WITH latest_staff_timeoffs AS (
SELECT t1.*,
CAST((t1.effective_timeoff_hours * 60) AS INT) total_effective_timeoff_minutes
FROM (
SELECT RANK() OVER (
PARTITION BY timeoff_id
ORDER BY timeoff_version DESC
) recency,
agent_arn,
timeoff_id,
shift_activity_arn,
timeoff_status,
timeoff_version,
effective_timeoff_hours,
timeoff_start_timestamp,
timeoff_end_timestamp,
last_updated_timestamp,
data_lake_last_processed_timestamp
FROM staff_timeoffs
WHERE (
instance_id = 'YourAmazonConnectInstanceId'
)
) t1
WHERE (recency = 1)
)
SELECT asgfg.forecast_group_name,
to.agent_arn,
asgfg.agent_name,
asgfg.staffing_group_name,
asgfg.username,
sa.shift_activity_name,
to.timeoff_start_timestamp,
to.timeoff_end_timestamp,
to.timeoff_status,
array_join(sn.supervisor_names, ',') AS supervisor_names,
sa.is_paid,
to.last_updated_timestamp,
to.data_lake_last_processed_timestamp,
u.agent_routing_profile_id AS routing_profile_id,
to.timeoff_id,
to.shift_activity_arn,
to.total_effective_timeoff_minutes
FROM latest_staff_timeoffs to
INNER JOIN latest_agent_staffing_group_forecast_group_view asgfg ON asgfg.agent_arn = to.agent_arn
INNER JOIN latest_shift_activities_view sa ON sa.shift_activity_arn = to.shift_activity_arn
INNER JOIN latest_supervisor_names_view sn ON sn.staffing_group_arn = asgfg.staffing_group_arn
INNER JOIN users u ON u.user_arn = to.agent_arn