자습서: 일괄 처리 검색 및 Power BI를 사용하여 변칙 시각화(일변량)
Important
2023년 9월 20일부터 새로운 Anomaly Detector 리소스를 만들 수 없습니다. Anomaly Detector 서비스는 2026년 10월 1일에 사용 중지됩니다.
이 자습서에서는 시계열 데이터 세트 내의 변칙을 일괄 처리 방식으로 찾습니다. Power BI Desktop을 사용하면 Excel 파일을 가져와서 Anomaly Detector API에 대한 데이터를 준비하고 통계적 변칙을 시각화할 수 있습니다.
이 자습서에서는 다음 작업을 수행하는 방법을 알아봅니다.
- Power BI Desktop을 사용하여 시계열 데이터 세트 가져오기 및 변환
- 일괄 처리 변칙 검색을 위해 Power BI Desktop과 Anomaly Detector API의 통합
- 예상 값, 표시 값 및 변칙 검색 경계를 포함하여 데이터 내에서 검색된 변칙 시각화
필수 조건
- Azure 구독
- Microsoft Power BI Desktop(평가판으로 사용 가능)
- 시계열 데이터 요소가 포함된 Excel 파일(.xlsx).
- Azure 구독이 있으면 Azure Portal에서 Anomaly Detector 리소스를 만들어 키와 엔드포인트를 가져옵니다.
- 애플리케이션을 Anomaly Detector API에 연결하려면 만든 리소스의 키와 엔드포인트가 필요합니다. 이 작업은 나중에 빠른 시작에서 수행합니다.
참고 항목
Anomaly Detector API 사용 시 최상의 결과를 얻으려면 JSON 형식 시계열 데이터에 다음이 포함되어야 합니다.
- 예상되는 누락된 요소 수가 10% 이하이고 동일한 간격으로 구분된 데이터 요소
- 데이터에 명확한 계절성 패턴이 없는 경우 최소 12개 이상의 데이터 요소
- 데이터에 명확한 계절성 패턴이 없는 경우 최소 4개 이상의 패턴 발생
시계열 데이터 로드 및 형식 지정
시작하려면 Power BI Desktop을 열고, 필수 조건에서 다운로드한 시계열 데이터를 로드합니다. 이 Excel 파일에는 일련의 UTC(협정 세계시) 타임스탬프 및 값 쌍이 포함되어 있습니다.
참고 항목
Power BI는 .csv 파일, SQL 데이터베이스, Azure Blob 스토리지 등과 같은 다양한 원본의 데이터를 사용할 수 있습니다.
기본 Power BI Desktop 창에서 홈 리본을 선택합니다. 리본의 외부 데이터 그룹에서 데이터 가져오기 드롭다운 메뉴를 열고 Excel을 선택합니다.
대화 상자가 표시되면 예제 .xlsx 파일을 다운로드한 폴더로 이동하여 선택합니다. 탐색기 대화 상자가 나타나면 Sheet1을 선택한 다음 편집을 선택합니다.
Power BI에서는 첫 번째 열의 타임스탬프를 Date/Time
데이터 형식으로 변환합니다. Anomaly Detector API로 보내려면 이러한 타임스탬프를 텍스트로 변환해야 합니다. Power Query 편집기가 자동으로 열리지 않으면 홈 탭에서 쿼리 편집을 선택합니다.
Power Query 편집기에서 변환 리본을 선택합니다. 열 그룹에서 데이터 형식: 드롭다운 메뉴를 열고, 텍스트를 선택합니다.
열 형식 변경에 대한 알림을 가져오면 현재 바꾸기를 선택합니다. 그런 다음 홈 리본에서 닫기 및 적용 또는 적용을 선택합니다.
데이터를 보내고 응답 형식을 지정하는 함수 만들기
데이터 파일의 형식을 지정하고 해당 파일을 Anomaly Detector API에 보내려면 위에서 만든 테이블에서 쿼리를 호출할 수 있습니다. Power Query 편집기의 홈 리본에서 새 원본 드롭다운 메뉴를 열고 빈 쿼리를 선택합니다.
새 쿼리가 선택되었는지 확인한 다음 고급 편집기를 선택합니다.
고급 편집기 내에서 다음 파워 쿼리 M 코드 조각을 사용하여 테이블에서 열을 추출하여 API에 보냅니다. 그런 다음, 쿼리는 JSON 응답에서 테이블을 만들고 이를 반환합니다. apiKey
변수를 유효한 Anomaly Detector API 키로 바꾸고, endpoint
를 사용자의 엔드포인트로 바꿉니다. 고급 편집기에 쿼리를 입력한 후 완료를 선택합니다.
(table as table) => let
apikey = "[Placeholder: Your Anomaly Detector resource access key]",
endpoint = "[Placeholder: Your Anomaly Detector resource endpoint]/anomalydetector/v1.0/timeseries/entire/detect",
inputTable = Table.TransformColumnTypes(table,{{"Timestamp", type text},{"Value", type number}}),
jsontext = Text.FromBinary(Json.FromValue(inputTable)),
jsonbody = "{ ""Granularity"": ""daily"", ""Sensitivity"": 95, ""Series"": "& jsontext &" }",
bytesbody = Text.ToBinary(jsonbody),
headers = [#"Content-Type" = "application/json", #"Ocp-Apim-Subscription-Key" = apikey],
bytesresp = Web.Contents(endpoint, [Headers=headers, Content=bytesbody, ManualStatusHandling={400}]),
jsonresp = Json.Document(bytesresp),
respTable = Table.FromColumns({
Table.Column(inputTable, "Timestamp")
,Table.Column(inputTable, "Value")
, Record.Field(jsonresp, "IsAnomaly") as list
, Record.Field(jsonresp, "ExpectedValues") as list
, Record.Field(jsonresp, "UpperMargins")as list
, Record.Field(jsonresp, "LowerMargins") as list
, Record.Field(jsonresp, "IsPositiveAnomaly") as list
, Record.Field(jsonresp, "IsNegativeAnomaly") as list
}, {"Timestamp", "Value", "IsAnomaly", "ExpectedValues", "UpperMargin", "LowerMargin", "IsPositiveAnomaly", "IsNegativeAnomaly"}
),
respTable1 = Table.AddColumn(respTable , "UpperMargins", (row) => row[ExpectedValues] + row[UpperMargin]),
respTable2 = Table.AddColumn(respTable1 , "LowerMargins", (row) => row[ExpectedValues] - row[LowerMargin]),
respTable3 = Table.RemoveColumns(respTable2, "UpperMargin"),
respTable4 = Table.RemoveColumns(respTable3, "LowerMargin"),
results = Table.TransformColumnTypes(
respTable4,
{{"Timestamp", type datetime}, {"Value", type number}, {"IsAnomaly", type logical}, {"IsPositiveAnomaly", type logical}, {"IsNegativeAnomaly", type logical},
{"ExpectedValues", type number}, {"UpperMargins", type number}, {"LowerMargins", type number}}
)
in results
매개 변수 입력 아래에서 Sheet1
을 선택하고 호출을 선택하여 데이터시트에서 쿼리를 호출합니다.
Important
완료되면 코드에서 키를 제거하고 공개적으로 게시하지 마세요. 프로덕션의 경우 Azure Key Vault와 같은 자격 증명을 안전하게 저장하고 액세스하는 방법을 사용합니다. 자세한 내용은 Azure AI 서비스 보안 문서를 참조하세요.
데이터 원본 개인 정보 보호 및 인증
참고 항목
데이터 개인 정보 보호 및 액세스에 대한 조직의 정책을 알고 있어야 합니다. 자세한 내용은 Power BI Desktop 개인 정보 수준을 참조하세요.
외부 데이터 원본을 활용하므로 쿼리를 실행하려고 하면 경고 메시지가 표시될 수 있습니다.
이 문제를 해결하려면 파일과 옵션 및 설정을 선택합니다. 그런 다음 옵션을 선택합니다. 현재 파일 아래에서 개인 정보 및 개인 정보 수준을 무시하고 잠재적으로 성능 향상을 선택합니다.
또한 API에 연결하려는 방법을 지정하라는 메시지가 표시될 수 있습니다.
이 문제를 해결하려면 메시지에서 자격 증명 편집을 선택합니다. 대화 상자가 표시되면 익명을 선택하여 API에 익명으로 연결합니다. 그런 다음 연결을 선택합니다.
그런 다음 홈 리본에서 닫기 및 적용을 선택하여 변경 내용을 적용합니다.
Anomaly Detector API 응답 시각화
Power BI 주 화면에서 위에서 만든 쿼리를 사용하여 데이터 시각화를 시작합니다. 먼저 시각화에서 꺾은선형 차트를 선택합니다. 그런 다음, 호출된 함수의 타임스탬프를 꺾은선형 차트의 축에 추가합니다. 마우스 오른쪽 단추로 클릭하고 타임스탬프를 선택합니다.
호출된 함수의 다음 필드를 차트의 값 필드에 추가합니다. 아래 스크린샷을 사용하여 차트를 작성합니다.
- 값
- UpperMargins
- LowerMargins
- ExpectedValues
필드를 추가한 후 차트에서 선택하고 크기를 조정하여 모든 데이터 요소를 표시합니다. 차트는 아래 스크린샷과 비슷하게 표시됩니다.
변칙 데이터 요소 표시
Power BI 창의 오른쪽에 있는 필드 창 아래에서 마우스 오른쪽 단추로 호출된 함수 쿼리 아래의 값을 클릭하고, 새 빠른 측정을 선택합니다.
표시되는 화면에서 계산으로 필터링된 값을 선택합니다. 기준 값을 Sum of Value
로 설정합니다. 그런 다음, IsAnomaly
를 호출된 함수 필드에서 필터로 끕니다. 필터 드롭다운 메뉴에서 True
를 선택합니다.
확인을 선택하면 필드 목록 하단에 Value for True
필드가 표시됩니다. 마우스 오른쪽 단추로 클릭하고 이름을 Anomaly(변칙)로 변경합니다. 이를 차트의 값에 추가합니다. 그런 다음, 서식 도구를 선택하고, X축 유형을 범주별로 설정합니다.
서식 도구와 데이터 색을 선택하여 차트에 색을 적용합니다. 차트가 다음과 같이 표시됩니다.