// 1. 파일 A 데이터 로드 및 변환
let
SourceA = Excel.Workbook(File.Contents("C:\Data\FileA.xlsx"), null, true),
DataA = SourceA{[Item="Sheet1",Kind="Sheet"]}[Data],
// 열 이름 변환
RenamedA = Table.RenameColumns(DataA, {
{"직원ID", "직원ID"},
{"이름", "직원명"},
{"부서", "소속부서"},
{"날짜", "기준일자"},
{"금액", "금액(원)"}
}),
// 날짜 형식 확인 및 변환
DateCheckedA = Table.TransformColumns(RenamedA, {
{"기준일자", each if Value.Is(_, type date) then _ else Date.FromText(_), type date}
}),
// 2. 파일 B 데이터 로드 및 변환
SourceB = Excel.Workbook(File.Contents("C:\Data\FileB.xlsx"), null, true),
DataB = SourceB{[Item="Sheet1",Kind="Sheet"]}[Data],
// 열 이름 변환
RenamedB = Table.RenameColumns(DataB, {
{"ID", "직원ID"},
{"성명", "직원명"},
{"팀", "소속부서"},
{"발생일", "기준일자"},
{"금액(천원)", "금액(천원)"}
}),
// 날짜 형식 변환 (mm/dd/yyyy -> yyyy-mm-dd)
DateCheckedB = Table.TransformColumns(RenamedB, {
{"기준일자", each if Value.Is(_, type date) then _ else Date.FromText(_, "mm/dd/yyyy"), type date}
}),
// 금액 단위 변환 (천원 -> 원)
AmountConvertedB = Table.TransformColumns(DateCheckedB, {
{"금액(천원)", each _ * 1000, type number}
}),
RenamedAmountB = Table.RenameColumns(AmountConvertedB, {{"금액(천원)", "금액(원)"}}),
// 3. 파일 C 데이터 로드 및 변환
SourceC = Excel.Workbook(File.Contents("C:\Data\FileC.xlsx"), null, true),
DataC = SourceC{[Item="Sheet1",Kind="Sheet"]}[Data],
// 열 이름 변환
RenamedC = Table.RenameColumns(DataC, {
{"사번", "직원ID"},
{"성함", "직원명"},
{"소속", "소속부서"}
}),
// 날짜 열 통합 (연도, 월, 일 -> 기준일자)
DateCombinedC = Table.AddColumn(RenamedC, "기준일자", each Date.FromText(
Text.From([연도]) & "-" & Text.From([월]) & "-" & Text.From([일])
), type date),
// 불필요한 날짜 개별 열 제거
DateColumnsRemovedC = Table.RemoveColumns(DateCombinedC, {"연도", "월", "일"}),
// 달러 금액을 원화로 변환
AmountConvertedC = Table.AddColumn(DateColumnsRemovedC, "금액(원)", each [달러금액] * [환율], type number),
// 불필요한 열 제거
FinalC = Table.RemoveColumns(AmountConvertedC, {"달러금액", "환율"}),
// 4. 세 테이블 통합
CombinedTables = Table.Combine({DateCheckedA, RenamedAmountB, FinalC}),
// 5. 중복 제거 및 정렬
DuplicatesRemoved = Table.Distinct(CombinedTables, {"직원ID", "기준일자"}),
SortedTable = Table.Sort(DuplicatesRemoved, {{"기준일자", Order.Ascending}, {"직원ID", Order.Ascending}}),
// 6. 최종 결과
FinalResult = SortedTable
in
FinalResult