목차
<사전준비>
연습으로 사용할 데이터는 jsonplaceholder.typicode.com의 users이다.
https://jsonplaceholder.typicode.com/users
<Data Operation>
데이터 처리에 관해 power automate에서 사용하는 문법은 아래와 같다.
parse json
composefilter array
select
join
create CSV table
create HTML table
지금부터 차례차례 살펴본다.
1. parse json
- 개념
JSON은 속성과 값의 집합이다.
{"property1" : "value1", "property2" : "value2" }
JSON을 그대로 보면, 이해하기가 어렵고 복잡하다.
그래서 VIEWR를 통해 JSON 코드를 코드를 보기 좋게 만들어주는 사이트가 있다.
CodeBeautify.org/jsonviewer
- 스키마
웹 페이지와 웹 서버가 통신할 때, 정해진 JSON 스키마를 기본으로 데이터를 해석한다.
schema agreement라고 한다.
- 파워오토메이트에서 JSON 처리하기
parse json 액션을 사용한다.
- 파워오토메이트는 내가 가진 JSON 형식의 데이터를 입력하면, 해당 스키마를 자동으로 생성해낸다.
- 만약 data type이 array라면 Apply to each 액션이 실행된다.
2. compose
python에서 print와 같은 역할을 한다.
값을 출력해서, 현재 상황이 어떤 정도로 이루어지고 있는지 확인한다.
3. Filter Array
- 가져오는 값, 반환하는 값이 모두 array
- 주어진 array에서 특정한 항목의 값을 배열로 추출한다.
- 횡적인 개념이다. 여러 개의 array 중 내가 가져오고 싶은 행의 항목만 가져오기 때문이다.
아래의 users 데이터에서 addreess 안의 suite의 속성의 값이 Apt인 것만 추출하고 싶다.
manually trigger a flow
-내가 트리거를 수동으로 눌렀을 때 실행된다.
http
- method:get, URL넣기
parse json
- content: body, schema 생성
filter array
parse Json한 data의 body 중에서 suite 안에 'Apt'가 포함된 것을 추출한다.
만약 Parse JSON하지 않는 data를 가져온다면,
아래와 같이 구성한다.
- from의 body는 http의 body로
- value는 item().address.suite 라고 적는다. dynamic content가 구체적으로 생성되지 않기 때문에
item()의 adrress 속성의 suite 속성을 차례로 지정해야 하는 것이다.
두 값모두 outputs은 같다.
4. Select
select
종적인 개념이다. 내가 원하는 컬럼만 가져오게 한다.
특정 속성과 값만 추출해서 JSON형태로 사용하고 싶을 때 사용한다.
이같은 경우는 앞에서처럼 Parse JSON을 하지 않아도 된다.
5. Join
join
array를 풀어서, 하나로 연결하여 만든다.
아래의 경우 ;로 join을 했다.
결과는 아래와 같다.
각각의 array가 ;로 연결되어진 것을 볼 수 있다.
{"companyName":"Romaguera-Crona","id":1,"username":"Leanne Graham","zipcode":"92998-3874"};{"companyName":"Deckow-Crist","id":2,"username":"Ervin Howell","zipcode":"90566-7771"};{"companyName":"Romaguera-Jacobson","id":3,"username":"Clementine Bauch","zipcode":"59590-4157"};{"companyName":"Robel-Corkery","id":4,"username":"Patricia Lebsack","zipcode":"53919-4257"};{"companyName":"Keebler LLC","id":5,"username":"Chelsey Dietrich","zipcode":"33263"};{"companyName":"Considine-Lockman","id":6,"username":"Mrs. Dennis Schulist","zipcode":"23505-1337"};{"companyName":"Johns Group","id":7,"username":"Kurtis Weissnat","zipcode":"58804-1099"};{"companyName":"Abernathy Group","id":8,"username":"Nicholas Runolfsdottir V","zipcode":"45169"};{"companyName":"Yost and Sons","id":9,"username":"Glenna Reichert","zipcode":"76495-3109"};{"companyName":"Hoeger LLC","id":10,"username":"Clementina DuBuque","zipcode":"31428-2261"}
6. create CSV table
create csv table
select2의 output을 사용하여 만든다.
show advance 버튼을 누르면 automatic으로 할지 custom으로 개인화할지를 선택한다.
automatic 선택!
create file
csv형식의 데이터를 파일로 저장해보자.
두 가지 방법으로 연습해보자.
첫 번째는 원드라이브에 저장하는 것, 두 번째는 쉐어포인트에 저장하는 것이다.
쉐어포인트에 저장되는 것은 매번 flow를 실행할 때마다 새로운 파일이 생성되므로, 파일명을 바꿔줘야 한다.
다만 원드라이브는 안의 내용을 수정해준다.
결과는!
onedrive와 sharepoint에 모두 잘 저장되었다.
- UTF-8 BOM 인코딩
다만, 입력값이 한글값이라면 데이터가 깨진다.
이를 방지하기 위해서
UTF-8 BOM으로 텍스트 파일을 인코딩하여 에러요소를 제거한다.
Byte Order Mark(BOM) 를 text에 추가하는데, 우선
concat() 함수로, 인자로 아래의 값을 넣는다.
uriComponentToString('%EF%BB%BF'), body('Create_CSV_table')
uriComponentToString은 UTF-8을 의미한다.
%EF%BB%BF은 BOM(Byte Order Mark)를 의미한다.
compose
concat(uriComponentToString('%EF%BB%BF'), body('Create_CSV_table'))
file content를 compose의 output으로 변경
결과는 성공!
7. create HTML table
html table을 만들어서 create file을 한다.
html 테이블이다.
결과이다. html 파일이기 때문에 link로 share가 가능하다.
'마이크로소프트 > Power Automate' 카테고리의 다른 글
[powerAutomate + powerApps] 결합- 앱 만들기 2 (2) | 2023.06.12 |
---|---|
[powerAutomate + powerApps] 결합- 앱만들기1 (0) | 2023.06.12 |
[PowerAutomate] 파워오토메이트를 client로 이용하기 (0) | 2023.06.11 |
[Power Automate] 파워오토메이트 서버로 이용하는 방법 -patch (0) | 2023.06.11 |
[Power Automate], 파워오토메이트 서버로 이용하는 방법 -post (0) | 2023.06.11 |