CData API Server を使って Power Automate で SQL Analysis Services タスクを自動化
Microsoft Power Automate は、クラウドベースのローコード/ノーコードプラットフォームで、さまざまなアプリケーションやサービス間で反復タスクの自動化やビジネスプロセスの効率化を簡単に実現できます。
CData API Server は、オンプレミスやクラウドを問わず、複数のソースやアプリケーションからデータへのアクセスを可能にし、Power Automate の機能を拡張します。API Server の SQL Analysis Services コネクタ(または 250 種類以上の他のコネクタ)を使用すると、OData や Swagger などの業界標準のデータアクセスプロトコルを使用して、Power Automate でアクションや複雑なワークフローをネイティブに作成し、トリガーできます。
この記事では、Power Automate と CData API Server をセットアップし、SQL Analysis Services テーブルのリードが特定の条件に一致したときにメールや通知を送信するシンプルなトリガーを作成します。
それでは始めましょう!
前提条件
- CData API Server: こちらから無料トライアルをダウンロードできます。
- Microsoft Power Automate: こちらから無料トライアルにサインアップできます。
- データにアクセスできるアクティブな SQL Analysis Services アカウント。
概要
以下の手順で進めていきます。
- CData API Server をインストールし、SQL Analysis Services への接続を設定して、API Server 内で SQL Analysis Services のデータ の OData API エンドポイントを作成します。
- これらのエンドポイントを Power Automate で使用し、SQL Analysis Services テーブルから特定の条件が満たされたときにトリガーに基づいて自動的にメールを送信するフローを構築します。
ステップ 1:API Server のインストールと SQL Analysis Services への接続設定
1.1 API Server のインストール
まだインストールしていない場合は、CData API Server ページからお使いの OS 用のインストーラーをダウンロードしてください。インストールウィザードに従ってセットアップを完了します。
インストールが完了したら、以下の方法でサーバーを起動できます。
- Windows: CData API Server はデフォルトでサービスとして実行されます。サービスが実行されていることを確認し、ブラウザで http://localhost:8080/ を開いて API Server 管理コンソールにアクセスします。
- Linux/Mac: サーバーを手動で実行するか、サービスとして実行できます。手動で起動するには、インストールディレクトリに移動して java -jar apiserver.jar を実行します。
- また、root 権限で service.sh を実行して、API Server を Linux システムサービスとしてセットアップすることもできます。
1.2 CORS の有効化
Microsoft Power Automate と CData API Server が異なるドメインでホストされている場合、シームレスなクロスドメイン通信を可能にするために CORS(Cross-Origin Resource Sharing)を有効にする必要があります。API Server で CORS を有効にするには:
- 「Settings」に移動し、 アイコンをクリックして CORS 設定を編集します。
- Cross-Origin Resource Sharing (CORS) を有効にします。
- Allow all domains without '*' を有効にして、すべてのオリジンを許可します。
- Access-Control-Allow-Origin に SQL Analysis Services のオリジンドメインを入力するか、* を使用してすべてのドメインを許可します(パブリック API に適しています)。
- Access-Control-Allow-Credentials を有効にして、Cookie と認証ヘッダーを許可します。
- Access-Control-Allow-Methods に GET, PUT, POST, OPTIONS を入力します。
- Access-Control-Allow-Headers に Authorization, Content-Type を入力します。
- Access-Control-Max-Age(デフォルト:3600 秒)を設定して、プリフライトリクエストをキャッシュします。
- 「Save」をクリックします。
1.3 API Server で SQL Analysis Services 接続を追加
- 「Settings」に移動し、右上の Add Connection をクリックします。
- SQL Analysis Services を選択します。表示されない場合は、Only Installed をオフにしてすべてのコネクタを表示します。
- Install Connector をクリックして自動インストールします。手動セットアップの場合は、Manual Install を選択してダウンロードした ZIP ファイルをアップロードします。
- インストールが完了したら、SQL Analysis Services を再度クリックして接続設定を開き、以下の詳細を使用して設定します。
-
HTTP 認証
AuthScheme を"Basic" または"Digest" に設定してUser とPassword を設定します。CustomHeaders に他の認証値を指定します。
-
Windows (NTLM)
Windows のUser とPassword を設定して、AuthScheme をNTLM に設定します。
-
Kerberos およびKerberos Delegation
Kerberos を認証するには、AuthScheme をNEGOTIATE に設定します。Kerberos 委任を使うには、AuthScheme をKERBEROSDELEGATION に設定します。必要があれば、User、Password およびKerberosSPN を設定します。デフォルトでは、CData 製品は指定されたUrl でSPN と通信しようと試みます。
-
SSL/TLS:
デフォルトでは、CData 製品はサーバーの証明書をシステムの信頼できる証明書ストアと照合してSSL/TLS のネゴシエーションを試みます。別の証明書を指定するには、利用可能なフォーマットについてヘルプドキュメントの「SSLServerCert」プロパティを参照してください。
- 「Save & Test」をクリックして接続設定を検証し完了します。
接続するには、Url プロパティを有効なSQL Server Analysis Services エンドポイントに設定して認証を提供します。XMLA アクセスを使用して、HTTP 経由でホストされているSQL Server Analysis Services インスタンスに接続できます。 Microsoft ドキュメント configure HTTP access を参照してSQL Server Analysis Services に接続してください。
SQL をSQL Server Analysis Services に実行するには、ヘルプドキュメントの「Analysis Services データの取得」を参照してください。接続ごとにメタデータを取得する代わりに、CacheLocation を設定できます。
接続を設定したら、その後はあらゆるキューブを二次元テーブルとして扱うことができます。データに接続する際にCData 製品がSSAS のメタデータを取得して、動的にテーブルスキーマを更新します。 「CacheLocation」プロパティを設定すれば自動でファイルにキャッシュを作成するので、接続時に毎回メタデータを取得する必要もなくなります。
詳細は、ヘルプドキュメントの「Retrieving Analysis Services Data」を参照してください。
1.4 ユーザーの追加と設定
作成した OData エンドポイントへの安全なアクセスを許可するために、CData API Server でユーザーを作成・設定します。各ユーザーには認証情報とロールベースのアクセス制御があり、適切なロールを持つ承認されたユーザーのみが接続されたデータをクエリできるようになります。
- ナビゲーションペインから「Users」に移動し、右上の Add User をクリックします。
- Username を入力し、ユーザーの安全な Password を設定します。
- Role を選択します:
- Admin: 設定や接続を含むすべての機能へのフルアクセス。
- Query: API エンドポイント経由のデータアクセスに限定(Power Automate での使用に適しています)。
- (オプション)レート制限を設定:
- Requests Per Hour: 1 時間あたりの許可される API コール数(デフォルト:1000)。
- Max Concurrent Requests: 許可される並列 API リクエスト数(デフォルト:10)。
- ユーザーの Privileges を定義:
- GET: データの取得を許可。
- POST: 新しいレコードの作成を許可。
- PUT, MERGE, PATCH: 既存レコードの更新を許可。
- DELETE: レコードの削除を許可。
- 「Add User」をクリックしてユーザーアカウントを保存し、有効化します。
ユーザーを追加すると、Authtoken が自動的に生成されます。このトークンは、パスワードの代わりに安全な認証方法として API リクエストで使用できます。
また、Authtoken を更新したり、無効にしたり、ユーザー設定で Token Expiration オプションを有効にして有効期限ルール(例:有効期限までの日数)を設定することもできます。
1.5 エンドポイント用のテーブルを追加
SQL Analysis Services のデータを OData 経由で Power Automate で利用できるようにするには、API Server を通じて目的のテーブルを公開する必要があります。手順は以下のとおりです。
- CData API Server で、左側のナビゲーションから「API」に移動し、右上の Add Table をクリックします。
- 先ほど設定した SQL Analysis Services 接続を選択し、「Next」をクリックします。
- Tables セクションを展開して、利用可能なエンティティとスキーマを参照します。個々のテーブルを選択するか、上部の TABLE NAME チェックボックスをクリックしてすべてを選択します。次に「Confirm」をクリックします。
1.6 Power Automate でエンドポイントにアクセス
API の設定が完了したので、Power Automate から OData エンドポイントに接続してタスクを自動化できます。以下は使用できる OData エンドポイントの URL 形式です。
| エンドポイント | URL | |
|---|---|---|
| エンティティ一覧 | http://address:port/api.rsc/ | |
| テーブルメタデータ(例:albums) | http://address:port/api.rsc/albums/$metadata?@json | |
| テーブルデータ(例:albums) | http://address:port/api.rsc/albums |
これらの OData エンドポイントは、URL を使用して Power Automate で直接利用できるようになりました。Power Automate は OData をサポートしているため、ワークフローの自動化、アクションのトリガー、SQL Analysis Services からのライブデータを自動化プロセスに統合することが簡単にできます。
CData API Server は完全な OData フィルタリング機能をサポートしています。カスタムクエリやフィルターされたビジュアライゼーションには、$select、$filter、$orderby、$top、$skip などの標準 OData クエリパラメータをリクエストに追加できます。
ステップ 2:Power Automate でメールトリガーを自動化
CData API Server が起動し、SQL Analysis Services データから利用可能な OData エンドポイントができました。次に、条件に基づいてメールトリガーを自動化する Power Automate フローを構築しましょう。
この例では、SQL Analysis Services の Opportunity テーブルからリードと商談データを読み取るフローを構築します。このフローは ExpectedRevenue カラムで最も高い値を持つリードを特定し、そのリードの詳細を含むメールを自動的に送信します。
ここでは、Windows 11 上の Outlook アプリと Power Automate Desktop を使用します。Windows マシンに Outlook がインストールされていない場合は、Microsoft 365 公式サイトからダウンロードするか、Microsoft Store からインストールできます。
2.1 API OData エンドポイントのフィルタリング
CData API Server は OData URL フィルター (OData ABNF) を完全にサポートしているため、URL でテーブル (リソース) を直接フィルターして、フローに取り込む前に結果を制限・ソートできます。これにより、読み込み時間が短縮され、効率が向上します。サポートされているフィルターオプションの完全なリストは こちらで確認できます。
この例では、フィルターされた URL は次のようになります: http://localhost:8080/api.rsc/public_Opportunity?$top=1&$orderby=ExpectedRevenue desc
このようにエンドポイント URL を構築できます。各部分の意味は以下のとおりです:
| URL パート | 説明 |
|---|---|
| http://localhost:8080 | CData API Server がホストされているホスト名とポートを含むベース URL |
| /api.rsc/ | CData が API リソースを公開するために使用するデフォルトのエンドポイントパスプレフィックス |
| public_Opportunity | クエリするテーブル名(リソース)— この場合は public_Opportunity テーブル |
| ? | フィルタリングやソートなどに使用されるクエリ文字列パラメータの開始を示す |
| $top=1 | フィルターされた結果セットから最初のレコードのみを返す |
| $orderby=ExpectedRevenue desc | 結果を ExpectedRevenue カラムで降順にソート |
2.2 Power Automate Desktop でフローを構築
- Power Automate Desktop を起動し、左上の New をクリックして新しいフローを追加します。
-
フローに名前を付け(例:Email-Trigger)、「Create」をクリックします。
- フローデザイナーダッシュボードで、Actions ペインの下から Region を検索し、ダブルクリックして追加します。わかりやすい名前を付けて「Save」をクリックします。
-
Invoke Web Service を検索し、ダブルクリックして追加して、以下を設定します:
- URL: 先ほど作成したフィルター済み OData URL を入力します。
- Method: GET
- Accept: application/json
- Content-Type: application/json
- Save response: Get text into variable (for web pages)
- 「Save」をクリックします。
-
Convert JSON to Custom Object を検索し、ダブルクリックして追加します。
- 青い {x} アイコンをクリックし、変数 %WebServiceResponse% を選択します。
- 「Save」をクリックします。
- Outlook を検索し、Launch Outlook を選択します。ダブルクリックしてフローに追加し、「Save」をクリックします。
-
Outlook を検索し、Send email message through Outlook を選択します。ダブルクリックして追加し、以下を設定します:
- Outlook instance: %OutlookInstance%
- Account: Outlook メールアドレスを入力します。
- Send email message from: Account
- To: 受信者のメールアドレスを入力します。
- Subject: メールの件名を追加します(例:New Opportunity with Highest Expected Revenue)
-
Body: 以下のシンプルな HTML コードを貼り付けます。ラベルとテーブル名は自分のものに置き換えてください:
Top Lead Details: Account ID: %JsonAsCustomObject['value'][0]['AccountId']% Name: %JsonAsCustomObject['value'][0]['Name']% Expected Revenue: %JsonAsCustomObject['value'][0]['ExpectedRevenue']% Close Date: %JsonAsCustomObject['value'][0]['CloseDate']% - Body is HTML: このオプションをオンにします。
- 「Save」をクリックします。
- Outlook を検索し、Close Outlook を選択します。ダブルクリックしてフローに追加し、「Save」をクリックします。
- End region を検索し、ダブルクリックしてフローに追加します。
-
最終的なフローは次のようになります:
-
上部の「Run」をクリックしてフローを開始します。プロセスは自動的に Outlook を開き、フローで指定された受信者にメールを送信します。メールは次のようになります:
2.3 フローのスケジュールと改善
これで、最も高い ExpectedRevenue を持つ新しいリードが見つかったときにメールを送信するフローができました。Power Automate Desktop には組み込みのスケジュール機能がないため、Windows タスク スケジューラまたは Power Automate(クラウド)を使用して、設定した間隔で継続的に実行する必要があります。
重複メールを避けるには、Power Automate の Write text to file アクションを使用して Id フィールドをファイル(例:lastLead.txt)に保存します。実行するたびに、Read text from file アクションを使用して現在の Id と比較します。一致した場合はメールをスキップし、新しいリードに対してのみアラートが送信されるようにします。
このフローは始まりにすぎません。CRM レコードの更新、高価値リードの Excel へのログ記録、リアルタイム Slack アラートの送信など、リード管理プロセスのさらに多くのステップを自動化するように拡張できます。
CData API Server を 30 日間無料でお試しください
ローコード/ノーコードプラットフォームで OData REST API を構築し、ライブデータとのシームレスな統合を実現しましょう。CData API Server を 30 日間無料でお試しいただき、SQL Analysis Services(または 250 種類以上の他のコネクタ)からのライブデータを使用して Power Automate でタスクを自動化する方法を体験してください。
こちらから無料トライアルを開始できます。