Data Transformation
using LogicFlow
2018/06/30
LogicFlow-ja 小尾 智之
#MSInteract18 #T12
Self Introduction
Attribute1: VB / LogicApps-Flow-PowerApps
@twit_ahf
Attribute2: 艦これ / 御城プロジェクトRe / EDF / メガネ / クマ / プロレス
tomoyuki.obi
http://el.jibun.atmarkit.co.jp/ahf
Community: LogicFlow-ja / CLR/H
Microsoft MVP for Microsoft Azure(2017.03 ~)
https://www.facebook.com/groups/logicflowja/
Overview / Cost
Logic Apps / Flow とは
• コネクタを利用して複数システムを連携(iPaas)
– コネクタは用意されたものだけでなく自作も可能
– 既存サービスをカスタムコネクタとして登録可能
• デザイナー上での操作でほぼ完結する
ローコード/コードレス開発(Low-Code / Codeless)
• オンプレミス環境を交えても利用可能
– オンプレミス環境の API も利用可能
Dynamics365
Office365
Microsoft Azure
Logic Apps
Flow / PowerApps
Logic Apps 従量課金プラン
https://azure.microsoft.com/ja-jp/pricing/details/logic-apps/ Flow とは課金単位が異なる
Logic Apps/Flow 仕様と制限
LogicApps Flow
最大実行継続時間 90 日 30 日
ストレージリテンション期間 90 日 30 日
最小繰り返し時間 1 秒 1分
最大繰り返し間隔 500 日 500 日
実行履歴保持期間 7~90 日 28 日
ForEach レコード数 100,000 5,000
Loop Until 回数 5,000 5,000
SplitOn 最大数 100,000 5,000
ForEach 並列処理数 初期値 20
最大 50
初期値 1
最大 50
アクション実行数(5分間) 100K / 300K
同時呼出し数 2,500
エンドポイント同時受信数 1,000
エンドポイント読み取り可能呼出し数 60,000
エンドポイント起動可能呼出し数 45,000
LogicApps Flow
1 フローでのアクション数 500 250
1 フローでのネスト数 8 5
1リージョンでのフロー数 1,000 (1,000?)
1 フローごとのトリガ数 10 -
一つの式での最大文字数 8,192 8,192
アクション/トリガ名の文字数 80 80
コメントの文字数 256 256
パラメーター数 50 -
https://docs.microsoft.com/ja-jp/azure/logic-apps/logic-
apps-limits-and-config
https://docs.microsoft.com/ja-jp/flow/limits-and-config
Flow:制限事項と構成
LogicApps:制限事項と構成
1 Action
(Trigger)
1 Action
1 Action
1 Flow
Flow の課金単位
LogicApps の課金単位
Enterprise
Integration
SNS
Office365 / Dynamics365
Data Connect
Web Service
Azure Service
Online Storage
Notification
Standard Connecter
Cognitive Service
Button
Approval
Batch
Enterprise
Integration
SNS
Office365 / Dynamics365
Data Connect
Web Service
Azure Service
Online Storage
Notification
Standard Connecter
Cognitive Service
Button
Approval
Batch
228 Connectors
参考:2年前の状況
なぜデータ変換が必要か
• データレイアウトはサービスによってまちまち
• 昔は関係システム間で統一を図りやすかった
• 今は関連するサービスが多数なので統一は難しい
• ログにしても複数個所に分散することも多い
• iPaas な LogicApps/Flow ではなおさら
データ変換で行われること(一例)
• レイアウト変換
– フラットレコードをXML形式やJSON形式に
– 固定長を可変長に、またはその逆
• コード変換
– A社のコードをB社用に変換
– 送付先のルールに基づいた変換
• 属性の追加
– 商品コードに対する商品名
– 明細上の合計金額と伝票上の合計金額
簡単な変換までは行える
EDI などで求められる内容は不向き
JSON に対しての変換は得意だが
別マスタ参照など凝ったことができない
一通りの変換処理が可能
Visual Studio 2015 が必要な点がネック
データ変換の方法
Logic Apps Liquid EIP
固定長データ 〇 × ◎
可変長データ(CSV) 〇 × ◎
XML 〇 〇 ◎
JSON 〇 ◎ ×
HTML △ × ×
利用のしやすさ 〇 〇 ×
※個人的な主観です
Logic Apps の基本機能
LogicFlow の変換アクション
データ操作(Compose)
コネクタで提供されるものが基本
配列を CSV データに変換
配列を HTML Table に変換
HTML タグを除去
これらの変換機能は
通常のデータ変換とは異なる
コンテンツを JSON 型に変換する
スキーマ定義するとダイアログで選択可能になる
サンプルデータがあれば自動でスキーマは生成可能
変換された値を新しく
生成している
配列要素を結合する
配列の要素を
「次を使用して結合」で
設定した文字にて一つに結合する
Join 関数と同様の挙動
要素を作成する
変数に近いが
値の再設定は行えない
JSON 値を設定した場合
自動で JSON と認識される
(ただし Object として挙動)
Object
String
Json Xml Array
Int Float Bool
LogicFlow における型
string や int、json 等といった
変換関数にて変換を行う
要素を選択する
配列要素から特定の値に
限定した新しい配列を作成再表示時に不具合があるが
記載内容は正しいので注意
配列のフィルタ
同様の表示不具合がある
配列要素から特定の条件を
満たす要素だけに限定
ワークフロー関数
https://docs.microsoft.com/ja-jp/azure/logic-apps/logic-apps-workflow-definition-language
プロパティ操作関数
ここで言う
プロパティ=JSON値
指定した JSON 値を
変更して結果を
「新しいオブジェクト」
として返却
Mush.Drink = “kinmugi” のつもりでも
Mush2 = Mush.Clone
Mush2.Drink = “kinmugi”
として動作している
統合アカウントを利用した変換
Enterprise Integration Action
統合アカウントの作成
スキーマ・マップの作製
LogicFlow との関連付け
利用までの流れ
変換対象の
レイアウト
変換ルール 変換時に
利用する
アセンブリLiquidテンプレート
EIPで作成したxslt
または
.NET な DLLEIP の場合に必要
バッチの構成を定義し
意識せずに定型バッチ
処理を行うことが可能
BizTalk Schema
新規項目の追加で行う
フラットファイル用と
XMLファイル用で別
Schema 作成ウイザード
Schema 作成ウイザード
BizTalk Map
新規項目の追加でマップを選択して行う
項目間を繋いだり、間に処理を経由させたりして入出力を定義
BizTalk Functoid
拡張 Functoid
変換 Functoid
集計 Functoid
日時計算 Functoid
論理演算 Functoid
BizTalk Functoid
演算Functoid
関数演算 Functoid
文字演算 Functoid
Script Functoid
マップ上で利用する処理
を C# や VB.NET で作成
作成した処理はマップに含む
(インライン)か
外部アセンブリを呼出
統合アカウントに対してアッ
プロードする必要がある
ビルドすることで
マップ(xslt)が作成される
統合アカウントのマップに
アップロード
統合アカウントを利用したい
LogicFlow 上で設定が必要
統合アカウントと LogicFlow は
同一リージョンの必要あり
統合アカウントにUPすると
LogicFlowで利用可能になる
エンコードとデコード
エンコード
=XML から変換
デコード
=XMLに変換
Liquid Template
• Web アプリ向けに開発されたテンプレートエンジン
• オープンに公開されている
( https://github.com/Shopify/liquid )
• Shopify サービス用に強化された Shopify Liquid と
静的サイト向け Jekyll Liquid もある
Asp.Net で Razor やった人なら理解しやすいかも
Liquid Template
マップとしてテンプレートを
UPしておく必要がある
まとめ
• Logic Apps での変換機能はある程度揃っている
– 基本機能:込み入ったことをしようとすると大変
– Liquid:JSON を変換する場合は手軽
– EIP:一番多機能だが手間がかかる
• iPaas である以上何かしらの変換は必要
– ケースによって手段を使い分けるのがベター
Integration Service Environments(ISE)
アンケートにご協力ください!
• Compass Interract2018ページにアンケートへのリンクとQRコードがあります
– https://interact.connpass.com/event/77420/
• アンケートリンク
– URL
• https://forms.office.com/Pages/ResponsePage.aspx?id=0emDRJ2XDkOMJVhhhABT1kY0s84rWEFMh6lvL
SQ5jRNUQkQ1NzRUV1BZVUY5T1JNUVNSWlhCMlhNMy4u
– QRコード
48
Appendix
Appendix
• LogicFlow-ja
( https://www.facebook.com/groups/logicflowja/ )
• LogicFlow を扱っている Blog
– nrjlog ( http://zuvuyalink.net/nrjlog/ )
– てすとぶろぐ ( http://blogahf.blogspot.jp/ )
• Liquid
( https://shopify.github.io/liquid/ )
• Azure LogicApps
( https://blogs.msdn.microsoft.com/logicapps/ )
• Flow – Blog
(https://flow.microsoft.com/en-us/blog/)
• PowerApps – Blog
(https://powerapps.microsoft.com/en-us/blog/)
• Twitter Hashtag
– LogicApps → #LogicApps
– Flow → #MicrosoftFlow

20180630 data transformationusinglogicflow