Office 365 감사 로그를 Excel에서 쉽게 성형하려면
8949 단어 Office365ExcelPowerQuery
제20회 Office 365 공부회 의 LT로 조금 만졌습니다만 그 보충입니다.
Office 365 감사 로그
감사 로그를 참조할 수 있는 유저는 한정되기 때문에 그 설 등의 해설은 하지 않는다.
Office 365 감사 로그를 Excel 테이블로 가져오기
우선 가져오기

1 - 해당 로그 파일(csv)을 가져옵니다.
2 - 유니코드인 것 등 자동으로 인식되지만 다르면 조정한다. 편집에서 쿼리 편집기로.
AuditData 열 구문 분석

3 - AuditData 열 선택
4 - [해석] → [JSON]

구문 분석된 AuditData 열에서 참조

5 - 맞춤 열 추가
6 - "새 열 이름"과 "사용자 지정 열 식"을 설정합니다. 식은 "=[AuditData][Workload]"

AuditData 열에서 필드 Workload 값을 추출할 수 있습니다. 동일한 절차로 필드 ResultStatus를 추출합니다.

7 - 동일한 절차로 ResultStatus를 추출합니다. 식은 "=[AuditData][ResultStatus]"

AuditData 에 필드 ResultStatus 가 존재하지 않는 경우는 Error 가 되므로,
8 - 수식을 "= [AuditData][Workload]?"로 수정


필드 액세스의 "[]"에 "?"를 붙이면, 필드가 존재하는 경우는 해당의 값을, 필드가 존재하지 않는 경우 null 를 돌려준다.

9 - AuditData 열 선택
10 - 열 삭제
Excel 테이블에 로드

11 - 쿼리 편집기 닫기 및 로드
다중값이 있는 필드 참조

JSON에 퍼스 한 곳에서 시작해 보자.

RecordType이 15인 필터를 적용하는 필터 적용

ExtendedProperties 열을 사용자 지정 열 추가로 추출
각각의 값은 record 의 list인 것을 확인할 수 있다. 그리고 그 요소수가 다르다.

record 형의 값 리스트는 table 로 변환
Name - Value 의 조합을 나타내는 테이블이 된다

행과 열을 바꾸고,

첫 번째 줄을 열 이름으로

반드시 1행의 테이블이 되므로 record 로 변환한다. 이렇게하면 필드 값을 쉽게 참조 할 수 있습니다.
let
FullName = "hogehoge\AuditLog_0000-00-00_0000-00-00.csv",
Source = Csv.Document(
File.Contents(FullName),
[Delimiter=",", Columns=4, Encoding=65001, QuoteStyle=QuoteStyle.None]
),
#"Promoted Headers" = Table.PromoteHeaders(
Source,
[PromoteAllScalars=true]
),
#"Changed Type" = Table.TransformColumnTypes(
#"Promoted Headers",
{
{"CreationDate", type datetime}
, {"UserIds", type text}
, {"Operations", type text}
, {"AuditData", type text}
}
),
#"Parsed JSON" = Table.TransformColumns(
#"Changed Type"
, {
{"AuditData", Json.Document}
}
),
Custom1 = Table.SelectRows(
#"Parsed JSON"
, each [AuditData][RecordType] = 15
),
Custom2 = Table.AddColumn(
Custom1
, "ExtendedProperties"
, each [AuditData][ExtendedProperties]
),
Custom3 = Table.TransformColumns(
Custom2
, {"ExtendedProperties", each Table.FromRecords(_)}
),
Custom4 = Table.TransformColumns(
Custom3
, {"ExtendedProperties", each Table.Transpose(_)}
),
Custom5 = Table.TransformColumns(
Custom4
, {"ExtendedProperties", each Table.PromoteHeaders(_)}
),
Custom6 = Table.TransformColumns(
Custom5
, {"ExtendedProperties", each _{0}}
)
in
Custom6

table 형의 값은 열의 전개를 할 수 있지만, 이 경우는 감사 로그에 존재하는 프로퍼티만이 되므로 용도에 맞추어 사용하면 된다.
정보

JSON에 퍼스 한 곳에서 시작해 보자.

RecordType이 15인 필터를 적용하는 필터 적용

ExtendedProperties 열을 사용자 지정 열 추가로 추출
각각의 값은 record 의 list인 것을 확인할 수 있다. 그리고 그 요소수가 다르다.

record 형의 값 리스트는 table 로 변환
Name - Value 의 조합을 나타내는 테이블이 된다

행과 열을 바꾸고,

첫 번째 줄을 열 이름으로

반드시 1행의 테이블이 되므로 record 로 변환한다. 이렇게하면 필드 값을 쉽게 참조 할 수 있습니다.
let
FullName = "hogehoge\AuditLog_0000-00-00_0000-00-00.csv",
Source = Csv.Document(
File.Contents(FullName),
[Delimiter=",", Columns=4, Encoding=65001, QuoteStyle=QuoteStyle.None]
),
#"Promoted Headers" = Table.PromoteHeaders(
Source,
[PromoteAllScalars=true]
),
#"Changed Type" = Table.TransformColumnTypes(
#"Promoted Headers",
{
{"CreationDate", type datetime}
, {"UserIds", type text}
, {"Operations", type text}
, {"AuditData", type text}
}
),
#"Parsed JSON" = Table.TransformColumns(
#"Changed Type"
, {
{"AuditData", Json.Document}
}
),
Custom1 = Table.SelectRows(
#"Parsed JSON"
, each [AuditData][RecordType] = 15
),
Custom2 = Table.AddColumn(
Custom1
, "ExtendedProperties"
, each [AuditData][ExtendedProperties]
),
Custom3 = Table.TransformColumns(
Custom2
, {"ExtendedProperties", each Table.FromRecords(_)}
),
Custom4 = Table.TransformColumns(
Custom3
, {"ExtendedProperties", each Table.Transpose(_)}
),
Custom5 = Table.TransformColumns(
Custom4
, {"ExtendedProperties", each Table.PromoteHeaders(_)}
),
Custom6 = Table.TransformColumns(
Custom5
, {"ExtendedProperties", each _{0}}
)
in
Custom6

table 형의 값은 열의 전개를 할 수 있지만, 이 경우는 감사 로그에 존재하는 프로퍼티만이 되므로 용도에 맞추어 사용하면 된다.
정보
기타
Reference
이 문제에 관하여(Office 365 감사 로그를 Excel에서 쉽게 성형하려면), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/PowerBIxyz/items/1505592951af25c614c8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)