Strategy One
Python 対応トランザクション ダッシュボードを作成
MicroStrategy ONEから開始 (2024 年 3 月) MicroStrategy Cloud環境およびMicroStrategy Cloud for Government プラットフォームで、Python 対応のトランザクション ダッシュボードを作成できます。Python 対応のトランザクション ダッシュボードを作成および実行するには、以下の条件が必要です。
-
環境が Python 実行機能の使用をサポートしていることを確認してください
この機能は、Microstrategy Cloud Environment プラットフォームでサポートされています。連絡先戦略サポートこの機能を有効化するには
-
データ変更を書き戻すためのパブリック エンドポイントを含むデータ ソースを選択
-
メタデータを最新バージョンに更新
-
トランザクション対応のダッシュボードを作成
-
カスタム ランタイムを作成し、そのランタイムの一部として必要なすべての Python パッケージをダウンロード
-
必要なデータ操作操作を含む Python スクリプトを作成
-
関連するスクリプトでダッシュボードを構成
開始者はトランザクション対応のダッシュボードを作成しているその後、以下の手順に進みます。
カスタム ランタイムを作成
ランタイムの管理権限が必要です。この権限のあるユーザーは、サード パーティのパッケージをダウンロードできるため、資格を取得したアナリストのみがこの権限を持つ必要があります。
表示Python ランタイムの作成と編集参照してください。
ランタイムの管理権限のあるユーザーは、既存のランタイムを表示および管理し、新しいランタイムを作成できます。すべての環境にデフォルトのランタイムがあります。ランタイムを作成する際、その名前、説明、接続可能アドレス、インストールされているパッケージを変更し、スクリプト実行用のサイズを選択できます。ランタイムのインスタンスのサイズによって、そのランタイムに関連する各スクリプトの実行に利用できるリソース (CPU およびメモリ) が決まります。
- Workstation を開くと環境に接続。
-
ナビゲーション ペインで、[モニター] をクリックします。
すべての環境のデフォルトのランタイム名は(デフォルト) Strategy。
デフォルトのランタイムには、Python および mstrio パッケージの最新バージョンと、デフォルトのインスタンス サイズおよびデフォルト ネットワーク アクセス構成が含まれます。ユーザーは、mstrio パッケージを使用して、Strategyデフォルトのランタイムを使用してデータを更新できます
ユーザーはデフォルトのランタイムの構成を変更できません。インスタンス サイズ、ネットワーク アクセス、パッケージ構成をカスタマイズする場合、新しいランタイムを作成する必要があります。
-
左のペインで、クリック
次とランタイム。
-
入力ランタイム名と説明。新しく作成されたランタイムは最新のものを使用しますPython バージョン。既存のランタイムの場合、最新バージョンの Python にアップグレードできます。デフォルトランタイムのインスタンス サイズが0.2 vCPU 0.5 GB のメモリ。
-
IN ネットワーク アクセス、Python ランタイムからのアクセスが許可されたネットワークにアクセスします。形式は以下に準拠する必要がありますクラスレスドメイン間ルーティング (CIDR) 141.193.213.21/32 などの形式です。
-
クリック
左下で、Python ランタイムにインストールする新しいパッケージを追加します。パッケージ バージョンが提供されていない場合は、最新バージョンがインストールされます。次の形式を使用します: [パッケージ名][ホワイトスペース][パッケージ バージョン] 例:
-
要求 2.28.1
-
要求
-
-
[追加] をクリックします。
-
パッケージは通常、データ ソースに接続してデータ変更を書き戻し、Strategy API、または Microsoft Teams などの他のアプリケーションに接続することもできますPypi のリンクをクリックして、ダウンロードするパッケージの正確な名前とバージョンを確認します。
-
クリック追加ランタイムを保存し、インストールが完了するのを待ちますステータスを確認するには、ページを更新します。
いくつかの有用なヒント:
-
各フィールド (ネットワーク アクセス、パッケージ名、バージョン) を入力したら、クリックする前に Enter を押すようにしてください。追加またはOK変更を確認します
-
1 つのランタイムに複数のパッケージを追加できます。
-
環境間でオブジェクトを移行後、新しい環境でパッケージを再追加してランタイムの準備をします。ランタイムは、この追加手順なしでは機能しません。
-
デフォルトでは、全員は表示ランタイムの ACL です。
カスタム Python スクリプトを作成
次の権限を持つユーザーを設定:
-
スクリプト Python を使用
-
Python スクリプトを承認
-
次の ACL が推奨されます:
-
スクリプトを読み取るには、スクリプトの読み取り ACL が必要です。
-
スクリプトを更新するには、スクリプトに対する ACL を書き込みが必要です。
-
スクリプトを実行するには、スクリプト上の ACL とランタイム上の ACL を実行する必要があります。
-
- Workstation を開くと環境に接続。
-
[ナビゲーション] ペインで、
次とスクリプト。 -
スクリプト設定を開き、スクリプト タイプをトランザクション適切な Python ランタイムを選択します
-
ギャラリーからテンプレートを選択して変更することで、スクリプトの作成を開始します。または、ゼロから開始します。
-
スクリプト内の変数は通常、ダッシュボード グリッド内の列にマッピングされます。変数を定義するとき列パラメーターはデフォルトで有効になっています。トランザクション以外の変数の場合は、変数がデータ ソースへの接続などの内部使用である場合にこれを無効にします。
-
データ ソース接続パスワードには、非トランザクション タイプの変数を選択し、秘密の質問。
-
ユーザーのログインを記録し、データを変更しているユーザーを確認するために、システム プロンプト変数を含めることを検討します。
-
デフォルトの操作タイプは、選択、挿入、更新です。SELECT と UPDATE の両方を結合するなど、これらに加えて新しいアクション タイプを作成するには、トランザクション タイプ内変数の種類。単一の Python トランザクション スクリプトで、変数は 1 つだけですトランザクション タイプ。
-
書き戻しデータ ソース内のテーブルの主キーにマッピングされる変数の場合、コンシューマーが主キーを変更しないようにします。このような状況では、編集可能パラメーター。
-
NULL 値を許可しないデータ ソースの列の場合、必須パラメーター。
-
変数が必須作成者は、データベースで許可されている内容に応じて、列を空にできるかどうかを選択できます。
-
ユーザーが編集できるように列の場合は編集可能パラメーター。
-
トランザクション操作では、承認されたトランザクション Python スクリプトのみを使用できるため、本番用の準備ができたらスクリプトを承認する必要があります。Python トランザクション グリッドを使用するユーザー グループは、このスクリプト用の ACL を表示する必要があります。
ベスト プラクティス
-
サンプル コード テンプレートから確認します。
-
アトミック トランザクションをサポートするデータ ソースの場合、ランタイムの準備時にアトミック トランザクションをサポートするパッケージを選択します。Python スクリプトに、セクションを追加してアトミック トランザクションを処理します。
-
該当する場合、パラメーター化したクエリを使用します。このような方法で実行されるクエリは、クエリとパラメーターが実行用に別々に送信されるため、インジェクション攻撃の影響を受けません。
-
Python トランザクション スクリプト作成者とトランザクション ダッシュボード作成者は同一ではないため、スクリプトとダッシュボードを同等にしてください。これには、書き戻すデータ ソース テーブルの定義、Python スクリプトで定義された変数とダッシュボード トランザクション グリッド オブジェクト間の関係のマッピング、編集可能なオブジェクトなどが含まれます。
-
Python スクリプトがサポートしているもの (データの更新、新しいデータの挿入、別のテーブルへの削除または挿入のための行の選択、Microsoft Teams メッセージの送信、メールの送信など) の詳細な説明がスクリプトに含まれている必要があります。ダッシュボード作成者は、ダッシュボード エディターから Python スクリプトの説明を取得できます。適切な権限と ACL を持つユーザーのみが Python スクリプトを開くことができます
関連する Python スクリプトでダッシュボードを構成
必要な権限
ダッシュボードでトランザクションを構成するには:
-
Web 構成トランザクション
-
スクリプト Python を使用
-
関連するスクリプトの ACL を表示
ダッシュボードを使用し、変更を送信するようにユーザーを設定するには:
-
トランザクションの実行
-
スクリプトの ACL を表示
その他の基本的な必要な Library Web 権限:
-
Library Web の使用
-
ダッシュボードの Web 作成
-
ダッシュボードの Web 編集
-
ダッシュボードの Web 保存
-
ダッシュボードの Web 実行
-
アプリケーション オブジェクトの作成
-
Python ベースのトランザクションは、最新のグリッドと連携するように設計されています。グリッドを選択し、フォーマット パネルを開き、[フォーマット] をクリックしてトランザクションのオプション
。
-
クリックPython を使用。
-
操作タイプを選択し、カスタマイズされた操作名、ボタン名などを指定します。
-
アクション タイプは、このダッシュボードでコンシューマーに実行させたいアクションです。1 つ以上の操作タイプを選択する必要があります。
-
アクションに意味のある名前を付け、アクションで実行できる内容を説明して、ボタンに名前を付けます。
例:
-
アクション名顧客の年齢を更新
-
説明 [顧客-年齢] 列で顧客の年齢を更新してください。
-
ボタン名送信
-
-
操作を組み合わせられます例えば、既存のデータの変更とデータ行の追加を同時に実行できます。この動作を反映するアクション名を適宜選択します。
-
-
クリックPython スクリプトを選択ダッシュボードが存在しているプロジェクトからすべてのトランザクション Python スクリプトを取得する場合デフォルトでは、承認済みのスクリプトのみが表示されます。フィルターを使用してリストを移動し、ターゲットのスクリプトを見つけます。
-
スクリプトを選択すると、マッピング セクションが表示されます。選択したスクリプト名は、スクリプトの説明を示す情報アイコンとともに表示されます。このセクションの右上には、選択したスクリプトを置換するためのアイコンと、メタデータのスクリプト リストを更新するアイコンが提供されます。データを必要とする変数は、アスタリスク (*) でマークされています。この場合、構成を保存するためにマッピングを提供する必要があります。
アクション タイプ
-
グリッド内のデータ変更を許可選択: 編集可能オプションが有効になっています。作成者は、コンシューマーが変更できるようにする変数を選択できます。
-
データをグリッドに追加中選択: 新しいデータ エントリオプションが選択され、コンシューマーが挿入できる変数を選択できるようになります。
-
選択された行で操作を実行選択: 編集可能と新しいデータ エントリオプションは両方とも無効です。この場合、行番号がスクリプトに渡されます。スクリプトは、その行に対してどのような操作を実行するかを決定します。例えば、この操作を使用してグリッドから行を削除できます。
-
-
入力コントロールを構成するには、グリッドにトランザクションを作成。
-
クリック
操作を追加し、送信後に表示するメッセージを構成できます。
-
クリック完了トランザクションを完了し保存ダッシュボードです
ベスト プラクティス
-
データ変更を書き戻すためのデータ ソースによっては、SQL ベースのデータ ソースが最初に選択されます。データ ソースが Web サービスの場合は、Python が望ましいです。
-
データの変更と、メールの送信や Slack の更新などの操作を組み合わせた複雑なワークフローの場合は、Python スクリプトを使用します。
-
入力制御の構成およびグリッド オブジェクトの編集可能かどうかの定義のために、スクリプト変数とグリッド オブジェクトの間に 1 対 1 のマッピング関係を設定することを推奨します。
データ操作に Python トランザクションを使用
-
Python ベースのトランザクションでは、インラインでの編集はサポートされていないため、データの変更はすべて一括モードで行われます。クリック
データの変更を開始します
-
1 つの操作で、選択とデータ変更の両方に対応します。
-
データの選択、変更、または挿入をサポートするアクションの場合は、 をクリックしますデータを追加クリックして新しいデータを提供します。完了したら、 をクリックします追加。
-
[提出] をクリックします。
システム構成の推奨設定
コンテナー化された環境では、スクリプトを直接実行できますStrategy必要な設定を施しますこれらの環境にスクリプトを保存し、Workstation 内のどこからでもスクリプトにアクセスできるほか、他の管理者にアクセス権を提供することも可能です。現在、サーバーサイド スクリプト実行のサポートは、コンテナー化された環境でのみ有効になっています。
次の方法で Python トランザクション要求のパフォーマンスを向上できます:
ランタイムのインスタンス サイズを調整
-
ナビゲーション ペインで、[モニター] をクリックします。
-
左のペインで、クリックランタイム。
-
グリッド内でランタイムを右クリックし、を編集。
-
調整ランタイムのインスタンス サイズ。
ランタイム サイズを変更する必要があるのはなぜでしょうか。
デフォルトのランタイム サイズは、スクリプトが必要とするメモリーに対して十分でない場合があります。ランタイム サイズを増やすことで、スクリプトをエラーやクラッシュなく実行するのに十分なメモリーを確保できます。たとえば、データ ソースの作成にスクリプトを使用する場合、テーブルの作成に使用するスクリプトがランタイムをメモリーにロードする可能性があるため、より大きなランタイムの使用を推奨します。
大規模な環境を使用する際のリスクには、どのようなものがあるでしょうか。
また、大規模なコンテナー化された環境は、メモリを多く消費するため、ホスト コンピューターのパフォーマンスの問題を引き起こす可能性があります。また、コンテナーのクラッシュを引き起こす可能性があります。Strategyコンテナーの Python ランタイム用のメモリは限られています。これは現在、コンテナー化された環境用の 6 つの vCPU と 20 GB のメモリに制限されています。コンテナー環境のサイズや複雑さを定期的に評価し、パフォーマンス、セキュリティ、メンテナンスの要件に合致していることを確認することが重要です。リソースの使用量を削減するには、管理スクリプトを小さいランタイムで実行することを推奨します。
ランタイム設定を調整
-
ナビゲーション ペインで、[モニター] をクリックします。
-
左のペインで、クリックランタイム。
-
グリッド内でランタイムを右クリックし、情報を見る。
-
左ペインの [すべての設定] をクリックします。
-
ランタイム設定を調整します。
スクリプト タイムアウト (秒) Python スクリプト実行のタイムアウト設定。デフォルト設定は 600 秒です。
デフォルトの Pod インスタンス番号キャッシュされた Python 実行インスタンスのデフォルト数。
Python 実行インスタンス Python スクリプトが Python ランタイムに基づいて実行されている場合、Python 実行インスタンスが作成され、応じてキャッシュできます。デフォルトの Pod インスタンス番号と最大 Pod インスタンス番号 (合計実行スクリプトの制限)設定。
最大 Pod インスタンス番号 (合計実行スクリプトの制限)ランタイムに基づいて作成できる Python 実行インスタンスの最大数。
| ランタイムのデフォルトの Pod インスタンス番号 | ランタイムの最大 Pod インスタンス番号 (合計実行スクリプトの制限) | 推奨設定 |
|---|---|---|
| 1 | 1 | 使用量と同時処理の頻度が低く、応答時間にシビトがあるカジュアル ユーザー向け。Python 実行機能のポッドは常に起動しているため、ポッドの準備時間は短縮できますが、全体のコストは高くなります。常にオンになっているのは 1 つのポッドです。 |
| 1 | N>1 | 使用量が少なく、ある程度の同時実行性が必要ですが、応答時間にはそれほどシビアではないカジュアル ユーザー向け。1 つの Python 実行ポッドが常に起動し、要求に応じて最大 N-1 のポッドが起動できるため、この構成ではより多くの同時実行ケースに対応できます。応答の時間が長いユーザーもいます。他のユーザーは、ポッドの警告に時間がかかる場合があります。1 つのポッドが常に起動し、最大 N-1 のポッドが特定の時間に起動および起動し、2 分以上のアイドル後に停止できます。 |
| X>0 | = デフォルトの Pod インスタンス番号 | 同時使用量が多く、応答時間にシビトがある本格的なユーザー向けです。X 個のランタイム Pod が常に起動するため、価格は高くなります。 |
既知の制限
パフォーマンス
Python リモート実行の現在の論理は:
-
実行者ポッドが起動され、特定のランタイム用にカスタマイズされたパッケージが持続ボリューム上に存在し、持続ボリュームが Python 実行機能のコンテナーにマウントされます。
-
Python サービスの主なプロセスは、要求と応答の処理を担当します。実際のスクリプトの実行は、サブプロセスによって開始されます。その結果、Python スクリプトが実行されるたびに、Python インタプリタは、使用されているパッケージをサブプロセスのメモリにロードしようとします。
コンテナーがパース ボリュームのデータをインポートする際、遅延が発生するため、ポッドがすでに起動していても、サブプロセスでスクリプトを実行するのには追加の時間コストがかかります。
データ ソース接続
プライベート オンプレミス データ ソースの場合、Python 実行担当者ポッド コンテナーとプライベート データ ソースとの間にネットワーク接続がない場合、Python トランザクションはサポートされません。一般に、パブリック エンド ポイントのデータ ソースを使用できます。
関連記事
KB486432:Python スクリプト変数とグリッド フィールドを Python トランザクション構成でマッピングするベスト プラクティス
