Khắc phục Lỗi lặp lại các file trong Power Query

Liên hệ QC

maily mai

Thành viên mới
Tham gia
10/4/21
Bài viết
28
Được thích
1
Giúp e với ạ, em đang tổng hợp 4 file mà khi Expanded custom 4 file bị lặp lại 4 lần, dữ liệu cũng bị lặp lại như vậy, em đang không biết xử lý lỗi này như nào, Mong mọi người giúp e với ạ!
 

File đính kèm

  • th corona - Copy.rar
    59 KB · Đọc: 8
  • THDL.xlsx
    18.5 KB · Đọc: 6
  • ảnh.PNG
    ảnh.PNG
    192.3 KB · Đọc: 9
Giúp e với ạ, em đang tổng hợp 4 file mà khi Expanded custom 4 file bị lặp lại 4 lần, dữ liệu cũng bị lặp lại như vậy, em đang không biết xử lý lỗi này như nào, Mong mọi người giúp e với ạ!
Step Add column bạn trùng add 2 tầng:

1631714540941.png

Nếu làm đúng thì chỉ như vầy:

1631714596179.png

Kết quả step Expand phải lấy thêm cột Kind để lọc chỉ lấy sheet, vì có những name được tạo ra do filter

1631715027305.png

Của bạn lại 2 step Expand?

1631714781464.png

Chỉ expand 1 lần ở trên, them step filter lấy sheet

1631715180862.png

Expand lần nữa là ra kết quả.
 
Nếu dùng bộ M-code này thì chỉ cần sửa tên folder ở dòng 1
JavaScript:
let
  
    FolderName ="D:\MyPham\GPE\th corona - Copy\CORONA",
    FileNameList= Folder.Files(FolderName)[Name],
    FileNum={0..List.Count(FileNameList)-1},
    DataF= List.Transform(FileNum, (f) =>
    let
        FFullName =FolderName & "\" & FileNameList{f},
        Source1 = Table.SelectRows(Excel.Workbook(File.Contents(FFullName), null, true),each ([Kind] = "Sheet")),
        SourceData=Source1[Data],
        SheetName=Source1[Name],
        SheetNum={0..List.Count(SheetName)-1},
        DataN= List.Transform(SheetNum, (i) =>
        let
            Data0 = (SourceData{i}),
            DataFName = Table.AddColumn(Table.PromoteHeaders(Data0), "File", each FileNameList{f}),
            Datai = Table.AlternateRows(DataFName,0,1,10000)
        in Datai),
        List1 =  Table.FromList(DataN, Splitter.SplitByNothing()),
        ListColumns = Table.ColumnNames(List1{0}[Column1]),
        Ketqua1 = Table.ExpandTableColumn(List1,"Column1",ListColumns)
    in Ketqua1),
    List2 =Table.FromList(DataF,Splitter.SplitByNothing()),
    ListColumns2 = Table.ColumnNames(DataF{0}),
    Ketqua = Table.ExpandTableColumn(List2, "Column1", ListColumns2)
  
in Ketqua
 
Nếu dùng bộ M-code này thì chỉ cần sửa tên folder ở dòng 1
JavaScript:
let
 
    FolderName ="D:\MyPham\GPE\th corona - Copy\CORONA",
    FileNameList= Folder.Files(FolderName)[Name],
    FileNum={0..List.Count(FileNameList)-1},
    DataF= List.Transform(FileNum, (f) =>
    let
        FFullName =FolderName & "\" & FileNameList{f},
        Source1 = Table.SelectRows(Excel.Workbook(File.Contents(FFullName), null, true),each ([Kind] = "Sheet")),
        SourceData=Source1[Data],
        SheetName=Source1[Name],
        SheetNum={0..List.Count(SheetName)-1},
        DataN= List.Transform(SheetNum, (i) =>
        let
            Data0 = (SourceData{i}),
            DataFName = Table.AddColumn(Table.PromoteHeaders(Data0), "File", each FileNameList{f}),
            Datai = Table.AlternateRows(DataFName,0,1,10000)
        in Datai),
        List1 =  Table.FromList(DataN, Splitter.SplitByNothing()),
        ListColumns = Table.ColumnNames(List1{0}[Column1]),
        Ketqua1 = Table.ExpandTableColumn(List1,"Column1",ListColumns)
    in Ketqua1),
    List2 =Table.FromList(DataF,Splitter.SplitByNothing()),
    ListColumns2 = Table.ColumnNames(DataF{0}),
    Ketqua = Table.ExpandTableColumn(List2, "Column1", ListColumns2)
 
in Ketqua
e cảm ơn anh ạ,
"Không thầy đố mà làm nên"
Bài đã được tự động gộp:

Step Add column bạn trùng add 2 tầng:

View attachment 266146

Nếu làm đúng thì chỉ như vầy:

View attachment 266147

Kết quả step Expand phải lấy thêm cột Kind để lọc chỉ lấy sheet, vì có những name được tạo ra do filter

View attachment 266150

Của bạn lại 2 step Expand?

View attachment 266149

Chỉ expand 1 lần ở trên, them step filter lấy sheet

View attachment 266151

Expand lần nữa là ra kết quả
ôi, e cảm ơn ạ, đúng là lỗi nhỏ mà e lại không biết
 
Step Add column bạn trùng add 2 tầng:

View attachment 266146

Nếu làm đúng thì chỉ như vầy:

View attachment 266147

Kết quả step Expand phải lấy thêm cột Kind để lọc chỉ lấy sheet, vì có những name được tạo ra do filter

View attachment 266150

Của bạn lại 2 step Expand?

View attachment 266149

Chỉ expand 1 lần ở trên, them step filter lấy sheet

View attachment 266151

Expand lần nữa là ra kết quả.
anh cho e hỏi thêm với ạ, e muốn làm tiêu đề như ảnh mà e chưa biết cách làm như nào ạ
 

File đính kèm

  • ảnh 1.PNG
    ảnh 1.PNG
    12.8 KB · Đọc: 9
Cho vào dòng đầu của dữ liệu. Trong code thì xóa 2 dòng 2 và 3
 
Nếu dùng bộ M-code này thì chỉ cần sửa tên folder ở dòng 1
JavaScript:
let
 
    FolderName ="D:\MyPham\GPE\th corona - Copy\CORONA",
    FileNameList= Folder.Files(FolderName)[Name],
    FileNum={0..List.Count(FileNameList)-1},
    DataF= List.Transform(FileNum, (f) =>
    let
        FFullName =FolderName & "\" & FileNameList{f},
        Source1 = Table.SelectRows(Excel.Workbook(File.Contents(FFullName), null, true),each ([Kind] = "Sheet")),
        SourceData=Source1[Data],
        SheetName=Source1[Name],
        SheetNum={0..List.Count(SheetName)-1},
        DataN= List.Transform(SheetNum, (i) =>
        let
            Data0 = (SourceData{i}),
            DataFName = Table.AddColumn(Table.PromoteHeaders(Data0), "File", each FileNameList{f}),
            Datai = Table.AlternateRows(DataFName,0,1,10000)
        in Datai),
        List1 =  Table.FromList(DataN, Splitter.SplitByNothing()),
        ListColumns = Table.ColumnNames(List1{0}[Column1]),
        Ketqua1 = Table.ExpandTableColumn(List1,"Column1",ListColumns)
    in Ketqua1),
    List2 =Table.FromList(DataF,Splitter.SplitByNothing()),
    ListColumns2 = Table.ColumnNames(DataF{0}),
    Ketqua = Table.ExpandTableColumn(List2, "Column1", ListColumns2)
 
in Ketqua

Nếu thay FolderName bằng 1 Name thì bị lỗi ngay dòng này thầy Mỹ.

FolderName = Excel.CurrentWorkbook(){[Name="Source"]}[Content]{0}[Column1],

-> lỗi dòng: DataF= List.Transform(FileNum, (f) =>
 
Nếu thay FolderName bằng 1 Name thì bị lỗi ngay dòng này thầy Mỹ.

FolderName = Excel.CurrentWorkbook(){[Name="Source"]}[Content]{0}[Column1],

-> lỗi dòng: DataF= List.Transform(FileNum, (f) =>
Vào query option, mục Privacy, đánh dấu Always Ignore

1631762645661.png
 
Web KT
Back
Top Bottom