maixuanvuong276
Thành viên mới
- Tham gia
- 28/8/13
- Bài viết
- 31
- Được thích
- 3
- Giới tính
- Nam
- Nghề nghiệp
- Human
rảnh đang hỏi sơ bộ vài thứ xem nó siêu việt cỡ nào đó màĐâu phải công cụ mạnh là chạy nhanh đâu bạn nhỉ!
Ưu nhược điểm thì cũng phân tích nhiều rồi anh. Với dữ liệu lớn thì dùng ADO còn theo mệt, chưa kể còn tính toán, tổng hợp, sắp sếp, thiết lập mối quan hệ giữa các bảng
Có thể đặt name đường dẫn fileLàm sao để lấy được đường dẫn Full File Name của Workbook đang chạy code M vậy bạn? Tôi tìm hoài không thấy lệnh.
Mục đích: Gửi File này cho bất cứ ai cũng chạy được. Không phải thay lại Source (Source đang lấy là Full File Name của File excel đang chạy PQ)
Cảm ơn!
Không hiểu có phải bạn hỏi ý này.Cụ thể tôi cần thay cụm này:
Source = Excel.Workbook(File.Contents("D:\Excel\Query\File Test PowerQuery.xlsx"), null, true),
Cụm: "D:\Excel\Query\File Test PowerQuery.xlsx" này chính là Full Name của File Excel đang chạy PQ
Nếu đặt name trong File thì có thể xài công thức để lấy ra cụm trên: nhưng không biết kết hợp thay thế vào như nào
Name là: TenFile =SUBSTITUTE(LEFT(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1),1)-1),"[","")
thêm trường đó để biết dữ liệu lấy từ File nào đó anh.Không hiểu lắm trong List có vài Files mà trên Sheet nó lặp lại nhiều thế
Mở lên thôi nó laod cũng chậm ... nó load cả .Net nữa hèn chi chậm
View attachment 265806
Trong hình của Kiều Mạnh có 6 files, trong đó 2 file gốc và 4 file copy.Không hiểu lắm trong List có vài Files mà trên Sheet nó lặp lại nhiều thế
Mở lên thôi nó laod cũng chậm ... nó load cả .Net nữa hèn chi chậm
có lẻ sức mạnh của nó là nạp dữ liệu vào Data model và khi cần thì phân tích nó thôi ... còn lấy dữ liệu thông thường VD như tổng hợp Sheet + Files mà ko biết tên Sheet thì ADOB làm ok hết + tốc độ sẻ nhanh hơn đấyNói thêm: Trong file ở chủ đề này: https://www.giaiphapexcel.com/diendan/threads/tổng-hợp-nhiều-file-thành-1-file-bằng-power-query.156768/post-1040037
Tên file là dữ liệu của tháng nào đó, và của cửa hàng/ chi nhánh nào đó. Tên sheet là dữ liệu của nhóm Sale nào đó, thì cần có 2 cột tên file và tên sheet để lập báo cáo phân tích các kiểu. Chứ dữ liệu tổng hợp lại để đó thì vô nghĩa.
View attachment 265827
Ngoài ra, sử dụng Power query còn có cái lợi là khi dữ liệu tổng hợp nhiều file nhiều sheet lại mà lớn hơn 1 triệu dòng (thậm chí vài triệu, vài chục triệu) thì có thể không gán xuống sheet mà gán vào data model. VBA, ADO các kiểu không làm được chuyện này.
Đồng ý về điểm tốc độ. Lần đầu tiên mở file sẽ phải load .Net, các lần sau refresh sẽ nhanh hơn 1 chút, nhưng có lẽ vẫn thua ADO.có lẻ sức mạnh của nó là nạp dữ liệu vào Data model và khi cần thì phân tích nó thôi ... còn lấy dữ liệu thông thường VD như tổng hợp Sheet + Files mà ko biết tên Sheet thì ADOB làm ok hết + tốc độ sẻ nhanh hơn đấy
đồng ý với anh cái khúc Em tô đậm thôiĐồng ý về điểm tốc độ. Lần đầu tiên mở file sẽ phải load .Net, các lần sau refresh sẽ nhanh hơn 1 chút, nhưng có lẽ vẫn thua ADO.
Power query còn thêm 1 đặc điểm nữa là sau khi load dữ liệu tương đương với ADO xong, các hàm M của PQ cũng còn có thể làm thêm 1 số việc nữa ví dụ như unpivot, thêm cột conditional column, cột luỹ kế, cột đếm có điều kiện, đếm luỹ kế riêng rẽ từng nhóm, ... Nếu ADO phải rất rành rẽ câu lệnh SQL mới làm được, hoặc không làm được luôn.
Em không rành về ADO, chỉ áp dụng mấy hàm mà các tiền bối đã xây dựng. Nên thấy cấu trúc của ADO hơi khó hiểu, làm trên Power Query thấy đơn giản hơn.đồng ý với anh cái khúc Em tô đậm thôi
còn chỉnh sửa các hàm M em thấy chưa phổ biến lắm ít nhất là thời điểm hiện tại trên GPE này
và người dùng phổ thông rất khó khi vận dụng nó
Còn ADODB câu SQL nó vô cùng lắm ... trên GPE này e rằng chưa có ai dám khẳng định là mình làm được tất cả thuần SQL cho ADODB
Nhiều người dùng phân tích trong đó có tôi thì cũng không thạo nhiều về M mà chỉ biết các tính năng cơ bản có trên các tab của Power Query. Chủ yếu dùng chập dữ liệu từ các file hoặc folder hoặc get data từ các nguồn khác, chứ việc phân tích thì phân tích trên Power Pivot hoặc Power Bi(+R+Python). Cho nên tính năng của Power Query phần lớn người sử dụng nó để chập dữ liệu, chuẩn hoá dữ liệu thôi. Diễn đàn chủ yếu toàn lên hỏi ăn xổi luôn thì toàn hỏi VBA hoặc công thức Excel chứ mấy người hỏi những thứ khác đâu. Cho nên mấy mục này bắt đầu ở diễn đàn thì mới là sơ khai giai đoạn đầu thôi.đồng ý với anh cái khúc Em tô đậm thôi
còn chỉnh sửa các hàm M em thấy chưa phổ biến lắm ít nhất là thời điểm hiện tại trên GPE này
và người dùng phổ thông rất khó khi vận dụng nó
Còn ADODB câu SQL nó vô cùng lắm ... trên GPE này e rằng chưa có ai dám khẳng định là mình làm được tất cả thuần SQL cho ADODB
ADODB chỉ khó nhất cái câu lệnh SQL thôi nó vô cùng lắmEm không rành về ADO, chỉ áp dụng mấy hàm mà các tiền bối đã xây dựng. Nên thấy cấu trúc của ADO hơi khó hiểu, làm trên Power Query thấy đơn giản hơn.
Câu SLQ khó mà cứ chịu khó mày mò tí rồi cũng viết được. Mà đã viết được 1 lần thì lần sau thấy dễ hơn. Cái khó và dễ sai nhất của nó là lồng biến vào câu lệnh phức tạp, thêm bớt các dấu nháy đơn, nháy kép muốn phát khùng mà vẫn bị báo lỗi.ADODB chỉ khó nhất cái câu lệnh SQL thôi nó vô cùng lắm
còn lại không khó lắm chỉ có cái Conn và Rs thôi ... cơ bản mọi cái trên GPE này có hết rồi
quan trọng là có biết vận dụng nó hay không thôi
2 môi trường khác nhau, nếu viết full câu lệnh SQL (giả sử request tới SQL server) thì nó xử lý ở trên SQL server, còn đẩy raw về rồi ETL ở power query thì nó là môi trường của power query kết quả trả về là kết quả cuối cùng mặc dù gọi nhiều bảng nhưng chỉ là query chứ không lưu, còn việc xử lý thì chắc chắn môi trường ở sql server sẽ nhanh hơn power query rồi, còn so với môi trường xử lý khác như Access, ODBC tới database của Foxpro thì không chắc Power query thua đâu khi cần clean data ở dạng nhiều,với SQL server thì connect Power query full SLQ sẽ ngon hơn mà thực tế là vậy người ta sẽ viết thẳng cái code rồi gửi request connect luôn, PQ cho phép điều gửi code lập trình SQL thẳng để request, không biết ADO có làm được điều này không tôi đã thử sử dụng tạo bảng tạm và tính toán trên bảng tạm đó để lấy dữ liệu mong muốn bằng ADO nhưng không connect được chưa kể đến loop, ví dụ với câu đơn giản như vầy ADO sẽ báo lỗi, nếu mà không request được dạng này mà chỉ là mấy câu select bình thường ADO thì không thể so ETL được với power queryHơi lạc ra khỏi chủ đề này (tổng hợp dữ liệu từ nhiều sheet) 1 chút:
- Power query nếu muốn tạo quan hệ 2 bảng thì phải query 2 bảng đơn trước, rồi mới dùng câu lệnh Merge. Nhiều bảng quan hệ với nhau cũng phải lấy hết xuống rồi merge từng cặp. Còn ADO dùng câu lệnh SQL với cú pháp join ... on (left, right hay join tuỳ hoàn cảnh). Một câu lệnh SQL có thể join hết từng ấy bảng, và kết quả chỉ là 1 bảng kết quả cuối cùng.
- Power query dùng Table.Combine đơn thuần cũng phải lấy hết các bảng xuống rồi mới combine, SQL chỉ cần lệnh Union và chỉ kết quả cuối mới đưa xuống. (Hàm tôi viết tổng quát ở những ảnh chụp và trích dẫn bên trên thì không dùng combine, lại phải ứng dụng hàm M theo cách khác.
- SQL nói thật là "vô cùng", thậm chí có thể tạo các bảng ảo và Select trên đó và nhiều thứ khác mà tôi không biết.
Nói chung là người dùng ở 1 trình độ nào đó sẽ thích cái này hơn cái kia, ở trình độ khác thì ngược lại. Thích cái gì cũng nên biết trước ưu nhược điểm của cái đó mà áp dụng cho phù hợp vấn đề đang làm.