Power Automate- Xử lý dữ liệu dãy trùng lặp (Sumif trong excel)

 


Vấn đề :

Chúng ta 1 bảng dữ liệu tổng hợp như thế này dạng Excel, Google Sheet,Sharepoint List nằm trên Onedrive,Google Drive, Sharepoint có các yêu cầu đặt ra

  • Lọc theo ngày mình yêu cầu
  • Tính tổng giá trị cột Count
  • Đếm số dòng lặp lại cho mỗi dữ liệu
  • Tự động trích xuất báo báo và gửi mail
Chúng ta phải tự động báo cáo như thế nào ?

DateMonthNameIDCount
08-Mar-219A14
08-Mar-219A25
08-Mar-219A36
08-Mar-219B47
08-Mar-219B58
08-Mar-219C69
08-Mar-219C79
08-Mar-219F83
08-Mar-219F97
08-Mar-219G108
08-Mar-219H119
08-Mar-219K124
08-Mar-219K132
08-Mar-219K146
09-Mar-219B14
09-Mar-219B13
09-Mar-219K17
09-Mar-219B18
10-Mar-219C19
10-Mar-219S14
10-Mar-219B12
10-Mar-219C16
10-Mar-219V14
11-Mar-219C17
11-Mar-219C18
11-Mar-219C19
12-Mar-219D14
12-Mar-219D12
12-Mar-219D16
12-Mar-219D14
12-Mar-219G17
12-Mar-219D18
11-Mar-219D19
07-Mar-219K14
07-Mar-219D12
08-Mar-219E16
09-Mar-219E14
09-Mar-219F17
09-Mar-219E18
10-Mar-219T19
10-Mar-219E14
10-Mar-219A12
09-Mar-219E16


GIẢI PHÁP

Bước 1:

Đầu vào của chúng ta sẽ bằng Nút Bấm (Button) yêu cầu nhập ngày vào Nút Bấm
Giá trị Đầu vào: Trigger Date  - Định dạng ngày tháng năm (YYYY-MM-DD)


Bước 2:

Cũng như lập trình, ta cũng cần phải khai báo biến sử dụng Variable









Đặt biến Count : Interger (Số nguyên)   


Bước 3:

Tải File Excel hoặc Sharepoint của bạn vào

Filter Query :   DATE eq 'Trigger date'

Mục đích của việc lọc ở bước này sẽ giúp nhanh và giảm tải khả năng xử lý của hệ thống. Tránh chạy vòng lặp Apply to Each sẽ rất nặng


Bước 4:

Đặt biến RepeatName : Array (mãng)
Biến dạng dãy bởi vì cột Name dạng một dãy dữ liệu

Bước 5:

Sử dụng vòng lặp 

Value : là Value từ Bước 3 


Sử dụng Tăng Biến 


Biến cần tăng lên đó là cột Name
Nghĩa là qua mỗi vòng lặp các dãy dữ liệu excel dữ liệu sẽ được tạo thành một mãn với nhiều giá trị được cộng dồn lại


 

Sau đó thoát hẳn ra khỏi  vòng lặp này để tới bước tiếp theo. Không được viết bước tiếp trong vòng lặp

Bước 6:

Sử dụng Data Operation --> Compose (Soản thảo)




Expression:

union(variables('RepeatName'),variables('RepeatName'))

Bước 7:

Đặt biến GroupName là Array


Bước 8: Mở ra vòng lặp Apply to each 2 

Output : từ Uni-Name 



Compose3 : expression =item()

Bước 9:

Lọc dãy  Value = Tải file excel ở bước 3 xuống
Giá trị Name = Output ('Compose3')

Output('Compose_3')


Bước 10:  

Bước này chúng ta sẽ đếm được Mỗi hạng mục có bao nhiêu dòng

Bằng cách tạo một Compose (Soạn)



Expression= length(body('Filter_array'))


Bước 11:  Mở vòng lặp thứ 3 

Body= Body('Filter_array') ở bên trên

Mở một Tăng biến khác cho giá trị Count khai báo ban đầu

Value = int(items('Apply_to_each_3')['Count'])


Sau đó thoát ra khỏi vòng lặp số 3 


Bước 12:  

Tăng biến cho GroupName đã tạo ở trên để làm cơ sở để tạo ra một HTML cho việc dễ báo cáo


{
  "Product": @{outputs('Compose_3')},
  "Total": @{variables('Count')},
  "Count": @{outputs('length')}
}


Bước 13: 

Thiết lặp biến Count trở về số 0 sau mỗi giá trị Name để tránh cộng dồn.
Dùng Set Available trong Variable


Sau đó thoát hoàn toàn ra khỏi vòng lặp số 2

Bước 14: 

tạo ra bảng HTML để báo cáo


Style HTML : Phần này chỉ là câu lệnh giúp làm đẹp HTML 

Giá trị của HTML là lấy từ bước 12 (tăng biến GroupName)

Bước 15: 

Gửi báo cáo qua mail 


Ghép 2 thành tố này lại sẽ có kết quả
Output1= Output('Style HTML')
Output2= Output('Creat HTML table')





























Nhận xét