let
WebAddress = Excel.CurrentWorkbook(){[Name="WebAdd"]}[Content]{0}[Column1] ,
DateFrom = Number.From(Excel.CurrentWorkbook(){[Name="DFrom"]}[Content]{0}[Column1]) ,
DateTo = Number.From(Excel.CurrentWorkbook(){[Name="DTo"]}[Content]{0}[Column1]) ,
DaysNo = {0..DateTo - DateFrom},
abc=Date.ToText(Date.From(DaysNo{0}+DateFrom),"dd/MM/yyyy"),
DataW = List.Transform(DaysNo, (wd) =>
let
Datewd=DaysNo{wd}+DateFrom,
Source = Web.Page(Web.Contents(WebAddress & Date.ToText(Date.From(Datewd),"dd/MM/yyyy"))),
Data0 = Source{0}[Data],
RenamedColumns = Table.RenameColumns(Data0,{{"Ngoại tệ Tên ngoại tệ", "Tên Ngoại tệ"}, {"Ngoại tệ Mã NT", "Mã ngoại tệ"}}),
RemoveRows = Table.Skip(RenamedColumns,2),
ReplaceValue = Table.ReplaceValue(RemoveRows,"-","0",Replacer.ReplaceText,{"Mua Tiền mặt"}),
ChangeType = Table.TransformColumnTypes(ReplaceValue,{{"Mua Tiền mặt", type number}, {"Mua Chuyển khoản", type number},
{"Bán", type number}}),
AddDate = Table.AddColumn(ChangeType, "Date", each Date.From(Datewd), Date.Type)
in AddDate),
List2 =Table.FromList(DataW,Splitter.SplitByNothing()),
ListColumns2 = Table.ColumnNames(DataW{0}),
KetQua1 = Table.ReorderColumns(Table.ExpandTableColumn(List2, "Column1", ListColumns2),
{"Date", "Tên Ngoại tệ", "Mã ngoại tệ", "Mua Tiền mặt", "Mua Chuyển khoản", "Bán"})
KetQua = if Curr = null then KetQua1 else Table.SelectRows(KetQua1, each [Mã ngoại tệ] = Curr)
in
KetQua
let
WebInitial = Excel.CurrentWorkbook(){[Name="WebAdd"]}[Content]{0}[Column1],
Curr = Excel.CurrentWorkbook(){[Name="Currency"]}[Content]{0}[Column1],
DateFrom = Date.From(Excel.CurrentWorkbook(){[Name="DFrom"]}[Content]{0}[Column1]),
DateTo = Date.From(Excel.CurrentWorkbook(){[Name="DTo"]}[Content]{0}[Column1]),
List0 = {0..Number.From(DateTo) - Number.From(DateFrom)},
List1 = {Number.From(DateFrom)..Number.From(DateTo)},
DataW =List.Transform(List0, (wd) =>
let
Date1 = Date.ToText(Date.From( List1{wd}), "ddMMyyyy"),
WebAddress = WebInitial & Text.Start(Date1,2) & "%2F" & Text.Middle(Date1,2,2) & "%2F" & Text.End(Date1,4),
Source = Web.Page(Web.Contents(WebAddress)),
Data0 = Table.PromoteHeaders(Table.Skip(Source{0}[Data],1)),
Data=Table.AddColumn(Table.SelectRows(Data0, each [Ngoại tệ] <> null), "Ngày", each Date.From( List1{wd}))
in Data),
List2 =Table.FromList(DataW,Splitter.SplitByNothing()),
ColumnList= Table.ColumnNames(DataW{0}),
Ketqua0=Table.SelectRows(Table.ExpandTableColumn(List2, "Column1", ColumnList), each [Ngày] <> null),
Ketqua1 = Table.RenameColumns(Ketqua0,{{"Tiền mặt & Séc", "Mua Tiền mặt & Séc"}, {"Chuyển khoản", "Mua Chuyển khoản"}}),
Ketqua= if Curr = null then Ketqua1 else Table.SelectRows(Ketqua1, each [Ngoại tệ]= Curr)
in
Ketqua
DataW =List.Transform(List0, (wd) =>
if Date.DayOfWeek(Date.From( List1{wd}),Day.Monday) < 5 then
let
Date1 = Date.ToText(Date.From( List1{wd}), "ddMMyyyy"),
WebAddress = WebInitial & Text.Start(Date1,2) & "%2F" & Text.Middle(Date1,2,2) & "%2F" & Text.End(Date1,4),
Source = Web.Page(Web.Contents(WebAddress)),
Data0 = Table.PromoteHeaders(Table.Skip(Source{0}[Data],1)),
Data=Table.AddColumn(Table.SelectRows(Data0, each [Ngoại tệ] <> null), "Ngày", each Date.From( List1{wd}))
in Data
else null),
List2 =Table.FromList(DataW,Splitter.SplitByNothing()),
ColumnList= Table.ColumnNames(if DataW{0} = null and DataW{1} <> null then DataW{1}
else if DataW{1} = null then DataW{2}
else null),
Hiện tôi chưa bắt được sự kiện refresh complete. Câu lệnh Refresh đã xong, code đã thoát, nhưng còn thời gian update query chạy ngầm không tính được.Các bác cho dữ liệu tỷ giá 1 tháng và đo tốc độ chạy của Power Query chia sẻ cho mọi người tham khảo.
Tôi lấy thử 1 tháng, đo hơi thủ công (do không biết đo thời gian chạy Background như thế nào)Các bác cho dữ liệu tỷ giá 1 tháng và đo tốc độ chạy của Power Query chia sẻ cho mọi người tham khảo.
Em thấy học về Power Query này xem video dễ hiểu hơn,Tôi lấy thử 1 tháng, đo hơi thủ công (do không biết đo thời gian chạy Background như thế nào)
Chạy lần đầu, do có kết nối load .Net Framework, tổng thời gian cả refresh code + Running Background khoảng 10 giây.
Mà chạy lại lần sau thì khoảng 4 giây.
Bạn có giải pháp nhanh hơn, mạnh hơn Power Query chăng?
Video tốt nhất cũng là 1 clip cho 1 bài cụ thể, muốn áp dụng cho mình cũng phải thực hành từng bước như trong hướng dẫn thôi. Quan trọng là phải thấy vấn đề cần xử lý, biết cách xử lý vấn đề đó, mà không trường hợp nào giống trường hợp nào. Học cái gì liên quan đến xử lý dữ liệu đều cần nhất cái tư duy chứ không phải cầm tay chỉ việc.Em thấy học về Power Query này xem video dễ hiểu hơn,