모바일 앱 동기화 및 작업을 위한 원격 분석 이벤트
오프라인 동기화 이벤트와 관련된 Power Apps 모바일 애플리케이션 데이터는 모델 기반 및 캔버스 앱에서 사용할 수 있습니다. 이 데이터는 조직에 대한 오프라인 동기화 이벤트의 상태 및 성능을 평가하는 데 사용할 수 있습니다.
이 데이터는 Application Insights의 Power Apps>모바일 앱 동기화 및 작업 테이블에 들어갑니다. 사용자가 오프라인 모드로 구성된 Power Apps 모바일 앱에 액세스할 때 항목이 기록됩니다. 모델 기반 앱의 오류 이벤트와 관련된 추가 데이터는 Power Apps>UCI에서 사용할 수 있습니다.
모바일 앱 동기화 및 작업 이벤트 정의
- id: 이벤트 ID.
- 대상: 이벤트에서 추적하는 시나리오의 이름입니다.
- 유형: 이벤트의 소스 테이블입니다.
- 이름: 이벤트에서 추적하는 시나리오의 이름입니다.
- 기간: 시나리오 기간(밀리초)입니다. 기간에는 앱이 비활성 상태인 긴 기간이 포함될 수 있습니다.
- operation_Id: 세션의 고유 식별자입니다.
- operation_ParentId: 이벤트에서 추적하는 시나리오의 고유 식별자입니다.
- user_Id: Microsoft Entra 사용자 ID입니다.
- application_Version: 앱의 버전입니다.
- customDimensions: 다음 특성을 포함합니다.
- "EventName": 이벤트(ScenarioEnd)에 의해 추적되는 시나리오의 요약입니다.
- "ScenarioResult": SUCCESS 또는 FAILURE입니다.
- ErrorCode: 동기화 실패 시 생성되는 오류 코드입니다. 자세한 내용은 오류 코드 매핑 테이블을 참조하세요.
- ErrorMessage: 성공 시 비어 있거나 오류를 설명하는 문자열입니다.
- FailureType: 동기화 실패 유형을 정의합니다.
- LogLevel: 이벤트의 심각도 또는 보고 수준입니다. 유효한 값은 info, error, warning, error 또는 verbose입니다.
- DataSyncMode: 사용자가 경험한 오프라인 동기화 유형입니다.
- DELTA_SYNC: 자동 증분 동기화입니다.
- GRID_SYNC: 그리드 보기의 새로 고침에 의해 트리거됩니다.
- FIRST_SYNC: 디바이스에서 초기 동기화(또는 로그아웃/재구성 후).
- FORCED_SYNC: 디바이스 상태 페이지 버튼에서 트리거됩니다.
- SINGLE_RECORD_SYNC: 푸시 알림에 의해 트리거됩니다.
- AppFlavor: 디바이스에 설치된 네이티브 앱입니다. 유효한 값은 FieldService 및 PowerApps입니다.
- AppInfo_Version: 앱 스토어에 표시된 네이티브 앱의 버전입니다.
- ActiveDuration: 앱이 활성 상태인 동안의 시간만 포함하는 시나리오 기간(밀리초)입니다.
- DeviceInfo_Id: 디바이스의 고유 식별자입니다.
- DeviceInfo_model: 디바이스 모델(예: iPhone 13)입니다.
- DeviceInfo_make: 디바이스 제조사(예: Apple)입니다.
- DeviceInfo_OsName: 디바이스 운영 체제(예: Android)입니다.
- DeviceInfo_OsVersion: 운영 체제 버전(예: Android 13)입니다.
- Loc_country: 원격 분석 디바이스의 출처입니다.
- eventContext: 다음과 같은 속성을 포함합니다.
- CurrentSyncId: 성공한 동기화 패스의 ID입니다. 동기화가 성공할 때마다 재설정합니다. (오류 발생 후에는 재설정되지 않습니다.)
- CurrentActivityId: 동기화 패스의 ID입니다. 동기화할 때마다 재설정합니다.
- entityName: 데이터 다운로드 이벤트의 테이블 이름입니다.
- ProfileId: 앱 및 사용자에 대해 구성된 오프라인 프로필의 ID입니다.
- RecordCount: 다운로드된 레코드 수입니다.
- ResponseSize: HTTPClient에서 보고한 수신 페이로드 데이터 크기(압축된 크기)입니다.
- ContentLength: HTTPClient에서 보고한 수신 페이로드 데이터 크기(압축된 크기)입니다.
통합 클라이언트 인터페이스 오류 이벤트
- timestamp [UTC]: 이벤트가 발생한 시간입니다.
- problemId: "uci_trace" 또는 "uciMonitorFailure"(데이터의 출처)
- 유형: "uci_trace" 또는 "uciMonitorFailure"(데이터의 출처)
- outType: "uci_trace" 또는 "uciMonitorFailure"(데이터의 출처)
- outerMessage: 오류 메시지.
- itemType: "예외"
- CustomDimensions:
- eventContext: 오류와 관련된 자세한 내용입니다.
- ServerConnectivityState: 사용자가 오프라인 모드입니까? (오프라인/온라인)
- NetworkConnectivityState: 사용자가 인터넷에 연결되어 있습니까? 사용자는 오프라인 모드에 있을 수 있지만 인터넷에 연결되어 있어야 합니다.
- IsOfflineByDefaultApp: false인 경우, 오프라인 모드에서 작업 기능이 켜져 있음을 의미합니다. true이면 오프라인 우선이 켜져 있음을 의미합니다.
- callStack: 오류가 발생한 프로그래밍 코드입니다.
- hostSubType: "PowerApps-Player-iOS-fieldservice"
- hostType: "MobileApplication"
- Operation_ID: sessionID 뒤에 '_'와 외부 상관 ID를 연결한 문자열(예: e11e8465-bc8f-4319-b64a-9c1e42453148_0da90a33-ad68-4a4e-bd45-5728d5da719a)입니다.
- Operation_ParentID: 오류와 관련된 활동 ID입니다.
- SessionId: 오류의 세션 ID입니다.
- UserId: Dynamics 365 사용자 ID입니다.
- User_authenticatedID: Dynamics 365 사용자 ID입니다.
- Application_version: 앱 버전(예: 9.2.24045.00212)입니다.
- Client_Type: 운영 체제 버전(예: iOS 또는 Android)입니다.
예제 시나리오
오류 코드별 오프라인 동기화 실패
이 쿼리를 사용하면 동기화가 실패할 때 일선 작업자에게 발생하는 오류 유형을 확인할 수 있습니다. 동기화하는 동안 모바일 애플리케이션이 닫히거나 동기화하는 동안 네트워크 연결이 끊어져 동기화가 완료되지 않는 경우와 같은 일부 오류는 제외됩니다. 오류 코드의 정의는 오류 코드 매핑 테이블에 나와 있습니다.
dependencies
| where name == "Offline.SyncDatabase"
| where success == false
| extend cd = parse_json(customDimensions)
| extend AppVersion = tostring(cd.AppInfo_Version)
| extend ErrorCode = tostring(cd.ErrorCode)
| extend ErrorMessage = tostring(cd.ErrorMessage)
| extend FailureType = tostring(cd.FailureType)
| summarize dcount(user_Id), count() by ErrorCode, ErrorMessage, FailureType, bin(timestamp, 1d)
테이블에서 동기화된 평균 레코드
이 쿼리를 사용하면 동기화에 가장 많은 레코드를 기여하는 테이블을 평가할 수 있습니다. 이 데이터를 사용하면 오프라인 프로필을 더욱 최적화하여 레코드 또는 각 테이블 내의 데이터를 줄일 수 있습니다.
dependencies
| where name endswith_cs "Offline.DdsClient.GetRecords"
| extend cd = parse_json(customDimensions)
| extend ec = parse_json(tostring(cd.eventContext))
| extend RecordCount = toint(ec.RecordCount)
| extend EntityName = tostring(ec.EntityName)
| extend syncid = tostring(ec.CurrentSyncId)
| extend DataSyncMode = tostring(cd.DataSyncMode)
//| where DataSyncMode == "FIRST_SYNC" //This is used to pivot on the type of sync being executed.
| summarize sum(RecordCount) by syncid, EntityName, DataSyncMode, user_Id
| summarize percentile(sum_RecordCount, 50), arg_max(sum_RecordCount, user_Id), count() by EntityName, DataSyncMode
동기화 모드별 평균 동기화 기간
이 쿼리를 사용하면 조직 내 사용자의 평균 동기화 기간을 평가할 수 있습니다.
dependencies
| where name == "Offline.SyncDatabase"
| extend cd = parse_json(customDimensions)
| extend ActiveDuration = toint(tostring(cd.ActiveDuration))
| extend WithBackgroundTime = duration
| extend DataSyncMode = tostring(cd.DataSyncMode)
| summarize percentile(ActiveDuration, 50), percentile(WithBackgroundTime, 50) by client_Type, DataSyncMode
사용자별 세부 정보 동기화
이 쿼리는 마지막 동기화 날짜, 마지막 오류, 동기화 기간 및 동기화된 레코드를 포함하여 동기화에 대한 사용자별 보기를 제공합니다.
dependencies
| where name == "Offline.SyncDatabase"
| extend cd = parse_json(customDimensions)
| extend ActiveDuration = toint(tostring(cd.ActiveDuration))
| extend WithBackgroundTime = duration
| extend DataSyncMode = tostring(cd.DataSyncMode)
| extend ErrorMessage = tostring(cd.ErrorMessage)
| summarize percentile(ActiveDuration, 50), percentile(WithBackgroundTime, 50), arg_max(timestamp, ErrorMessage), countif(success == false) by user_Id, DataSyncMode
디바이스 유형 및 앱 버전별 사용자 수
이 쿼리는 장치 모델에서 모바일 애플리케이션에 액세스하는 조직의 사용자에 대한 자세한 정보를 제공합니다.
dependencies
| where name == "Offline.SyncDatabase"
| extend cd = parse_json(customDimensions)
| extend AppVersion = tostring(cd.AppInfo_Version)
| summarize dcount(user_Id) by AppVersion, client_Type
오류 코드 매핑
오류 코드 | 실패 유형 | 정의 |
---|---|---|
-2146864604 | CONFIG_ERROR | 앱 또는 사용자 구성 오류입니다. 웹 서비스 오류 코드를 참조하십시오. |
-2146864606 | CONFIG_ERROR | 앱 또는 사용자 구성 오류입니다. 웹 서비스 오류 코드를 참조하십시오. |
-2146864607 | CONFIG_ERROR | 앱 또는 사용자 구성 오류입니다. 웹 서비스 오류 코드를 참조하십시오. |
-2146864608 | CONFIG_ERROR | 앱 또는 사용자 구성 오류입니다. 웹 서비스 오류 코드를 참조하십시오. |
-2146869250 | CONFIG_ERROR | 앱 또는 사용자 구성 오류입니다. 웹 서비스 오류 코드를 참조하십시오. |
-2147015328 | ACCESS_ERROR | 앱 또는 사용자 구성 오류입니다. 웹 서비스 오류 코드를 참조하십시오. |
-2147088248 | CONFIG_ERROR | 앱 또는 사용자 구성 오류입니다. 웹 서비스 오류 코드를 참조하십시오. |
-2147155198 | 오류 | -214로 시작하는 오류 코드에 대해서는 웹 서비스 오류 코드를 참조하세요. |
-2147155198 | ACCESS_ERROR | 앱 또는 사용자 구성 오류입니다. 웹 서비스 오류 코드를 참조하십시오. |
-2147167669 | ACCESS_ERROR | 앱 또는 사용자 구성 오류입니다. 웹 서비스 오류 코드를 참조하십시오. |
-2147180269 | ACCESS_ERROR | 앱 또는 사용자 구성 오류입니다. 웹 서비스 오류 코드를 참조하십시오. |
-2147180284 | ACCESS_ERROR | 앱 또는 사용자 구성 오류입니다. 웹 서비스 오류 코드를 참조하십시오. |
-2147187375 | 오류 | 앱 또는 사용자 구성 오류입니다. 웹 서비스 오류 코드를 참조하십시오. |
-2147187388 | 오류 | 앱 또는 사용자 구성 오류입니다. 웹 서비스 오류 코드를 참조하십시오. |
-2147187389 | 오류 | 앱 또는 사용자 구성 오류입니다. 웹 서비스 오류 코드를 참조하십시오. |
-2147204270 | 오류 | 앱 또는 사용자 구성 오류입니다. 웹 서비스 오류 코드를 참조하십시오. |
-2147204339 | 오류 | 앱 또는 사용자 구성 오류입니다. 웹 서비스 오류 코드를 참조하십시오. |
-2147204784 | 오류 | 앱 또는 사용자 구성 오류입니다. 웹 서비스 오류 코드를 참조하십시오. |
-2147209463 | ACCESS_ERROR | 앱 또는 사용자 구성 오류입니다. 웹 서비스 오류 코드를 참조하십시오. |
-2147217124 | 오류 | -214로 시작하는 오류 코드에 대해서는 웹 서비스 오류 코드를 참조하세요. |
-2147220884 | 오류 | -214로 시작하는 오류 코드에 대해서는 웹 서비스 오류 코드를 참조하세요. |
-2147220955 | ACCESS_ERROR | 앱 또는 사용자 구성 오류입니다. 웹 서비스 오류 코드를 참조하십시오. |
-2147220956 | EXTERNAL_ERROR | -214로 시작하는 오류 코드에 대해서는 웹 서비스 오류 코드를 참조하세요. |
-2147220960 | ACCESS_ERROR | 앱 또는 사용자 구성 오류입니다. 웹 서비스 오류 코드를 참조하십시오. |
-2147220970 | 오류 | -214로 시작하는 오류 코드에 대해서는 웹 서비스 오류 코드를 참조하세요. |
-2147220989 | 오류 | -214로 시작하는 오류 코드에 대해서는 웹 서비스 오류 코드를 참조하세요. |
-50 | 오류 | 내부 오류입니다. |
12 | 오류 | 알 수 없는 오류입니다. |
2000 | 오류 | 매핑되지 않은 오류입니다. |
2002 | 오류 | Dataverse SQL 시간 초과. |
2003 | DATABASE_ERROR | 데이터베이스 오류입니다. |
2004 | NETWORK_ERROR | 네트워크 오류입니다. |
2005 | SERVER_ERROR | 서버 오류입니다. |
2006 | AUTH_ERROR | 인증 오류입니다. |
2007 | DEVICE_ERROR | 디스크가 꽉 찼습니다 오류입니다. |
2008 | 오류 | 내부 오류입니다. |
2009 | AUTH_ERROR | 인증 오류입니다. |
2011 | CONFIG_ERROR | 앱 모듈 권한 오류입니다. |
2016 | CONFIG_ERROR | 오프라인 구성 오류입니다. |
2017 | CONFIG_ERROR | 오프라인 프로필 구성 오류입니다. |
3000 | EXPECTED_ERROR | 내부 이벤트를 동기화합니다. |
3003 | CONFIG_ERROR | 오프라인 프로필 구성 오류입니다. |