code chạy chậm trong power query

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

Hoale85

Thành viên mới
Tham gia
2/8/24
Bài viết
48
Được thích
1
Em nhờ các Anh/ Chị sửa giúp em code này với ạ. code này chạy chậm quá ạ. Em cảm ơn ạ.
let
Source = Excel.CurrentWorkbook(){[Name="neuw"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Mã KH", type text}, {"Mã KH.1", type text}, {"Tổng tiền", Int64.Type}, {"Hạn mức", Int64.Type}, {"Luyke", Int64.Type}, {"Countif", Int64.Type}}),

Sort = Table.Sort(#"Changed Type",{{"Mã KH", Order.Ascending}, {"Tổng tiền", Order.Ascending}}),
Types = Table.TransformColumnTypes(Sort,{{"Tổng tiền", type number}}),
Index = Table.AddIndexColumn(Types, "STT", 1, 1, Int64.Type),
Custom2 = Table.AddColumn(Index, "Ct2", each Table.SelectColumns(Table.FirstN(Index,[STT]),{"Mã KH", "Tổng tiền"})),
Custom3 = List.Transform (Custom2[Ct2], each
let
a = Table.LastN(_, 1)[Mã KH]{0},
Filter = Table.SelectRows(_, each [Mã KH] = a),
SumTien = List.Sum(Filter[Tổng tiền])
in SumTien),
Result = Table.AddColumn(Table.SelectColumns(Custom2,{"STT","Mã KH","Tổng tiền","Luyke"}), "Luyke1", each Custom3{[STT] - 1}),


//Sort1 = Table.Sort(Result,{{"Mã KH", Order.Ascending}, {"Tổng tiền", Order.Ascending}}),
// Types1 = Table.TransformColumnTypes(Sort1,{{"Tổng tiền", type number}}),
Index1 = Table.AddIndexColumn(Result, "STT1", 1, 1, Int64.Type),
Custom2_1 = Table.AddColumn(Index1, "Ct2", each Table.SelectColumns(Table.FirstN(Index1,[STT1]),{"Mã KH", "Luyke"})),

Custom3_1 = List.Transform (Custom2_1[Ct2], each
let
a = Table.LastN(_, 1)[Mã KH]{0},
Filter = Table.SelectRows(_, each [Mã KH] = a),
SumTien = List.Sum(Filter[Luyke])
in SumTien),
Result1 = Table.AddColumn(Table.SelectColumns(Custom2_1,{"STT","Mã KH","Luyke","Luyke1","Tổng tiền"}), "Luyke2", each Custom3_1{[STT] - 1}),
#"Reordered Columns" = Table.ReorderColumns(Result1,{"STT", "Mã KH", "Tổng tiền", "Luyke", "Luyke1", "Luyke2"})
in
#"Reordered Columns"Đính kèm file
 
Em nhờ các Anh/ Chị sửa giúp em code này với ạ. code này chạy chậm quá ạ. Em cảm ơn ạ.
let
Source = Excel.CurrentWorkbook(){[Name="neuw"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Mã KH", type text}, {"Mã KH.1", type text}, {"Tổng tiền", Int64.Type}, {"Hạn mức", Int64.Type}, {"Luyke", Int64.Type}, {"Countif", Int64.Type}}),

Sort = Table.Sort(#"Changed Type",{{"Mã KH", Order.Ascending}, {"Tổng tiền", Order.Ascending}}),
Types = Table.TransformColumnTypes(Sort,{{"Tổng tiền", type number}}),
Index = Table.AddIndexColumn(Types, "STT", 1, 1, Int64.Type),
Custom2 = Table.AddColumn(Index, "Ct2", each Table.SelectColumns(Table.FirstN(Index,[STT]),{"Mã KH", "Tổng tiền"})),
Custom3 = List.Transform (Custom2[Ct2], each
let
a = Table.LastN(_, 1)[Mã KH]{0},
Filter = Table.SelectRows(_, each [Mã KH] = a),
SumTien = List.Sum(Filter[Tổng tiền])
in SumTien),
Result = Table.AddColumn(Table.SelectColumns(Custom2,{"STT","Mã KH","Tổng tiền","Luyke"}), "Luyke1", each Custom3{[STT] - 1}),


//Sort1 = Table.Sort(Result,{{"Mã KH", Order.Ascending}, {"Tổng tiền", Order.Ascending}}),
// Types1 = Table.TransformColumnTypes(Sort1,{{"Tổng tiền", type number}}),
Index1 = Table.AddIndexColumn(Result, "STT1", 1, 1, Int64.Type),
Custom2_1 = Table.AddColumn(Index1, "Ct2", each Table.SelectColumns(Table.FirstN(Index1,[STT1]),{"Mã KH", "Luyke"})),

Custom3_1 = List.Transform (Custom2_1[Ct2], each
let
a = Table.LastN(_, 1)[Mã KH]{0},
Filter = Table.SelectRows(_, each [Mã KH] = a),
SumTien = List.Sum(Filter[Luyke])
in SumTien),
Result1 = Table.AddColumn(Table.SelectColumns(Custom2_1,{"STT","Mã KH","Luyke","Luyke1","Tổng tiền"}), "Luyke2", each Custom3_1{[STT] - 1}),
#"Reordered Columns" = Table.ReorderColumns(Result1,{"STT", "Mã KH", "Tổng tiền", "Luyke", "Luyke1", "Luyke2"})
in
#"Reordered Columns"Đính kèm file

Em nhờ các Anh/ Chị sửa giúp em code này với ạ. code này chạy chậm quá ạ. Em cảm ơn ạ.
let
Source = Excel.CurrentWorkbook(){[Name="neuw"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Mã KH", type text}, {"Mã KH.1", type text}, {"Tổng tiền", Int64.Type}, {"Hạn mức", Int64.Type}, {"Luyke", Int64.Type}, {"Countif", Int64.Type}}),

Sort = Table.Sort(#"Changed Type",{{"Mã KH", Order.Ascending}, {"Tổng tiền", Order.Ascending}}),
Types = Table.TransformColumnTypes(Sort,{{"Tổng tiền", type number}}),
Index = Table.AddIndexColumn(Types, "STT", 1, 1, Int64.Type),
Custom2 = Table.AddColumn(Index, "Ct2", each Table.SelectColumns(Table.FirstN(Index,[STT]),{"Mã KH", "Tổng tiền"})),
Custom3 = List.Transform (Custom2[Ct2], each
let
a = Table.LastN(_, 1)[Mã KH]{0},
Filter = Table.SelectRows(_, each [Mã KH] = a),
SumTien = List.Sum(Filter[Tổng tiền])
in SumTien),
Result = Table.AddColumn(Table.SelectColumns(Custom2,{"STT","Mã KH","Tổng tiền","Luyke"}), "Luyke1", each Custom3{[STT] - 1}),


//Sort1 = Table.Sort(Result,{{"Mã KH", Order.Ascending}, {"Tổng tiền", Order.Ascending}}),
// Types1 = Table.TransformColumnTypes(Sort1,{{"Tổng tiền", type number}}),
Index1 = Table.AddIndexColumn(Result, "STT1", 1, 1, Int64.Type),
Custom2_1 = Table.AddColumn(Index1, "Ct2", each Table.SelectColumns(Table.FirstN(Index1,[STT1]),{"Mã KH", "Luyke"})),

Custom3_1 = List.Transform (Custom2_1[Ct2], each
let
a = Table.LastN(_, 1)[Mã KH]{0},
Filter = Table.SelectRows(_, each [Mã KH] = a),
SumTien = List.Sum(Filter[Luyke])
in SumTien),
Result1 = Table.AddColumn(Table.SelectColumns(Custom2_1,{"STT","Mã KH","Luyke","Luyke1","Tổng tiền"}), "Luyke2", each Custom3_1{[STT] - 1}),
#"Reordered Columns" = Table.ReorderColumns(Result1,{"STT", "Mã KH", "Tổng tiền", "Luyke", "Luyke1", "Luyke2"})
in
#"Reordered Columns"Đính kèm fil

Em nhờ các Anh/ Chị sửa giúp em code này với ạ. code này chạy chậm quá ạ. Em cảm ơn ạ.
let
Source = Excel.CurrentWorkbook(){[Name="neuw"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Mã KH", type text}, {"Mã KH.1", type text}, {"Tổng tiền", Int64.Type}, {"Hạn mức", Int64.Type}, {"Luyke", Int64.Type}, {"Countif", Int64.Type}}),

Sort = Table.Sort(#"Changed Type",{{"Mã KH", Order.Ascending}, {"Tổng tiền", Order.Ascending}}),
Types = Table.TransformColumnTypes(Sort,{{"Tổng tiền", type number}}),
Index = Table.AddIndexColumn(Types, "STT", 1, 1, Int64.Type),
Custom2 = Table.AddColumn(Index, "Ct2", each Table.SelectColumns(Table.FirstN(Index,[STT]),{"Mã KH", "Tổng tiền"})),
Custom3 = List.Transform (Custom2[Ct2], each
let
a = Table.LastN(_, 1)[Mã KH]{0},
Filter = Table.SelectRows(_, each [Mã KH] = a),
SumTien = List.Sum(Filter[Tổng tiền])
in SumTien),
Result = Table.AddColumn(Table.SelectColumns(Custom2,{"STT","Mã KH","Tổng tiền","Luyke"}), "Luyke1", each Custom3{[STT] - 1}),


//Sort1 = Table.Sort(Result,{{"Mã KH", Order.Ascending}, {"Tổng tiền", Order.Ascending}}),
// Types1 = Table.TransformColumnTypes(Sort1,{{"Tổng tiền", type number}}),
Index1 = Table.AddIndexColumn(Result, "STT1", 1, 1, Int64.Type),
Custom2_1 = Table.AddColumn(Index1, "Ct2", each Table.SelectColumns(Table.FirstN(Index1,[STT1]),{"Mã KH", "Luyke"})),

Custom3_1 = List.Transform (Custom2_1[Ct2], each
let
a = Table.LastN(_, 1)[Mã KH]{0},
Filter = Table.SelectRows(_, each [Mã KH] = a),
SumTien = List.Sum(Filter[Luyke])
in SumTien),
Result1 = Table.AddColumn(Table.SelectColumns(Custom2_1,{"STT","Mã KH","Luyke","Luyke1","Tổng tiền"}), "Luyke2", each Custom3_1{[STT] - 1}),
#"Reordered Columns" = Table.ReorderColumns(Result1,{"STT", "Mã KH", "Tổng tiền", "Luyke", "Luyke1", "Luyke2"})
in
#"Reordered Columns"Đính kèm file
Nhờ các bác khắc phục giúp em với ạ. Em cảm ơn ạ
 
@Hoale85 Chị xinh đẹp có thể cho code vào thẻ code và gắn file đính kèm tử tế chút được hông? Chứ không có file cũng chẳng biết làm thế nào để giúp luôn ấy
 

File đính kèm

  • cong no 2.xlsm
    77.6 KB · Đọc: 4
Em chỉ tiếp nối cho chị phần nội dung để có thể tiếp cận tới khả năng có nhiều sự giúp đỡ hơn thôi. Chứ SQL với em vẫn còn mới lắm
Nội dung em nối được rồi ạ, nhưng code chạy hơi chậm ạ. Em muốn xử lý để code chạy nhanh hơn ạ
 

File đính kèm

  • cong no 3.xlsm
    65.5 KB · Đọc: 14
Rút lại bài viết vì không đúng chủ đề...
 
Lần chỉnh sửa cuối:
Nội dung em nối được rồi ạ, nhưng code chạy hơi chậm ạ. Em muốn xử lý để code chạy nhanh hơn ạ
Vì sao phải tính 2 lần cột lũy kế? Mà lại tính bằng cùng 1 phương thức, cùng 1 số step y hệt nhau và lập lại?
 
Vì sao phải tính 2 lần cột lũy kế? Mà lại tính bằng cùng 1 phương thức, cùng 1 số step y hệt nhau và lập lại?
Dạ, Lúc đầu em chỉ tính luỹ kế 1 cột, nhưng suy nghĩ cho bài toán rộng hơn: là 2, hoặc nhiều cột hơn. Nên em mới nối code thêm để xem chạy được không ạ. Nhưng code chạy chậm quá ạ.
 
Dạ, Lúc đầu em chỉ tính luỹ kế 1 cột, nhưng suy nghĩ cho bài toán rộng hơn: là 2, hoặc nhiều cột hơn. Nên em mới nối code thêm để xem chạy được không ạ. Nhưng code chạy chậm quá ạ.
Nếu muốn mở rộng lũy kế thì gộp trong 1 vòng lặp thôi
JavaScript:
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    RemovedColumns = Table.SelectColumns(Source,{"Tổng tiền", "Công nợ", "Mã KH"}),
    Sort = Table.Sort(RemovedColumns,{{"Mã KH", Order.Ascending}, {"Tổng tiền", Order.Ascending}}),
    Types = Table.TransformColumnTypes(Sort,{{"Tổng tiền", type number},{"Công nợ", type number}}),
    Index = Table.AddIndexColumn(Types, "STT", 1, 1, Int64.Type),
    Custom2 = Table.AddColumn(Index, "Ct2", each Table.SelectColumns(Table.FirstN(Index,[STT]),{"Mã KH", "Tổng tiền", "Công nợ"})),
    Custom3 = List.Transform (Custom2[Ct2], each
        let
            a = Table.LastN(_, 1)[Mã KH]{0},
            Filter = Table.SelectRows(_, each [Mã KH] = a),
            SumTien = List.Sum(Filter[Tổng tiền]),
            SumCno = List.Sum(Filter[Công nợ])
        in Text.From(SumTien) & "|" & Text.From(SumCno)),
    Result = Table.AddColumn(Table.SelectColumns(Custom2,{"STT","Mã KH","Công nợ","Tổng tiền"}), "Luyke", each Custom3{[STT] - 1}),
    SplitColumn = Table.SplitColumn(Result, "Luyke", Splitter.SplitTextByDelimiter("|", QuoteStyle.Csv), {"LuykeTien", "LuykeCno"}),
    Types2 = Table.TransformColumnTypes(SplitColumn,{{"LuykeTien", type number}, {"LuykeCno", type number}})
in
    Types2
 
Nếu muốn mở rộng lũy kế thì gộp trong 1 vòng lặp thôi
JavaScript:
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    RemovedColumns = Table.SelectColumns(Source,{"Tổng tiền", "Công nợ", "Mã KH"}),
    Sort = Table.Sort(RemovedColumns,{{"Mã KH", Order.Ascending}, {"Tổng tiền", Order.Ascending}}),
    Types = Table.TransformColumnTypes(Sort,{{"Tổng tiền", type number},{"Công nợ", type number}}),
    Index = Table.AddIndexColumn(Types, "STT", 1, 1, Int64.Type),
    Custom2 = Table.AddColumn(Index, "Ct2", each Table.SelectColumns(Table.FirstN(Index,[STT]),{"Mã KH", "Tổng tiền", "Công nợ"})),
    Custom3 = List.Transform (Custom2[Ct2], each
        let
            a = Table.LastN(_, 1)[Mã KH]{0},
            Filter = Table.SelectRows(_, each [Mã KH] = a),
            SumTien = List.Sum(Filter[Tổng tiền]),
            SumCno = List.Sum(Filter[Công nợ])
        in Text.From(SumTien) & "|" & Text.From(SumCno)),
    Result = Table.AddColumn(Table.SelectColumns(Custom2,{"STT","Mã KH","Công nợ","Tổng tiền"}), "Luyke", each Custom3{[STT] - 1}),
    SplitColumn = Table.SplitColumn(Result, "Luyke", Splitter.SplitTextByDelimiter("|", QuoteStyle.Csv), {"LuykeTien", "LuykeCno"}),
    Types2 = Table.TransformColumnTypes(SplitColumn,{{"LuykeTien", type number}, {"LuykeCno", type number}})
in
    Types2
Dạ anh, em cũng nghĩ tới phương án gộp vòng lặp, nhưng em mới tập viết code nên ko biết gộp thế nào. Em cảm ơn anh ạ.
 
Code này gọn hơn 1 xíu
JavaScript:
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    RemovedColumns = Table.SelectColumns(Source,{"Tổng tiền", "Công nợ", "Mã KH"}),
    Sort = Table.Sort(RemovedColumns,{{"Mã KH", Order.Ascending}, {"Tổng tiền", Order.Ascending}}),
    Types = Table.TransformColumnTypes(Sort,{{"Tổng tiền", type number},{"Công nợ", type number}}),
    Index = Table.AddIndexColumn(Types, "STT", 1, 1, Int64.Type),
    Custom2 = Table.AddColumn(Index, "Ct2", each Table.SelectColumns(Table.FirstN(Index,[STT]),{"Mã KH", "Tổng tiền", "Công nợ"})),
    Custom3 = List.Transform (Custom2[Ct2], each
        let
            a = Table.LastN(_, 1)[Mã KH]{0},
            Filter = Table.SelectRows(_, each [Mã KH] = a),
            SumTien = List.Sum(Filter[Tổng tiền]),
            SumCno = List.Sum(Filter[Công nợ])
        in {SumTien,SumCno}),
    Result = Table.AddColumn(Table.SelectColumns(Custom2,{"STT","Mã KH","Công nợ","Tổng tiền"}), "LuykeTien", each Custom3{[STT] - 1}{0}, type number),
    Result2 = Table.AddColumn(Result, "LuykeCno", each Custom3{[STT]-1}{1},type number)
   in
    Result2
 
Code này gọn hơn 1 xíu
JavaScript:
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    RemovedColumns = Table.SelectColumns(Source,{"Tổng tiền", "Công nợ", "Mã KH"}),
    Sort = Table.Sort(RemovedColumns,{{"Mã KH", Order.Ascending}, {"Tổng tiền", Order.Ascending}}),
    Types = Table.TransformColumnTypes(Sort,{{"Tổng tiền", type number},{"Công nợ", type number}}),
    Index = Table.AddIndexColumn(Types, "STT", 1, 1, Int64.Type),
    Custom2 = Table.AddColumn(Index, "Ct2", each Table.SelectColumns(Table.FirstN(Index,[STT]),{"Mã KH", "Tổng tiền", "Công nợ"})),
    Custom3 = List.Transform (Custom2[Ct2], each
        let
            a = Table.LastN(_, 1)[Mã KH]{0},
            Filter = Table.SelectRows(_, each [Mã KH] = a),
            SumTien = List.Sum(Filter[Tổng tiền]),
            SumCno = List.Sum(Filter[Công nợ])
        in {SumTien,SumCno}),
    Result = Table.AddColumn(Table.SelectColumns(Custom2,{"STT","Mã KH","Công nợ","Tổng tiền"}), "LuykeTien", each Custom3{[STT] - 1}{0}, type number),
    Result2 = Table.AddColumn(Result, "LuykeCno", each Custom3{[STT]-1}{1},type number)
   in
    Result2
Em cảm ơn Các Anh/ Chị nhiều ạ.
 
Web KT

Bài viết mới nhất

Back
Top Bottom