MicroStrategy ONE

Python 対応のトランザクションダッシュボードを作成する

MicroStrategy ONE (2024 年 3 月) 以降では、MicroStrategy Cloud 環境および MicroStrategy Cloud for Government プラットフォームで Python 対応のトランザクション ダッシュボードを作成できます。Python 対応のトランザクション ダッシュボードを作成して実行するには、次の操作を行う必要があります。

  • 環境がPythonエグゼキュータの使用をサポートしていることを確認する

    この機能は、Microstrategy Cloud Environment プラットフォームでサポートされています。接触MicroStrategy サポートこの機能を有効にします。

  • データの変更を書き戻すためのパブリックエンドポイントを持つデータソースを選択します

  • メタデータを最新バージョンに更新する

  • トランザクション対応ダッシュボードを作成する

  • カスタムランタイムを作成し、そのランタイムの一部として必要なすべてのPythonパッケージをダウンロードします。

  • 必要なデータ操作アクションを含むPythonスクリプトを作成する

  • 関連スクリプトを使用してダッシュボードを構成する

まずはトランザクション対応ダッシュボードの作成その後、以下の手順に従います。

カスタムランタイムを作成する

ランタイムの管理権限が必要です。この権限を持つユーザーはサードパーティのパッケージをダウンロードできるため、審査を受けたアナリストのみがこの権限を持つ必要があります。

見るPython ランタイムの作成と編集詳細についてはこちらをご覧ください。

ランタイムの管理権限を持つユーザーは、現在存在するランタイムを表示および管理し、新しいランタイムを作成できます。すべての環境にデフォルトのランタイムがあります。ランタイムを作成するときに、ユーザーはその名前、説明、接続できるアドレス、インストールされるパッケージを変更し、スクリプト実行のサイズを選択できます。ランタイム インスタンスのサイズによって、そのランタイムに関連付けられた各スクリプト実行に使用できるリソース (CPU とメモリ) が決まります。

  1. ワークステーションを開き、環境に接続する
  2. ナビゲーションウィンドウで、モニター

    すべての環境のデフォルトのランタイム名は(デフォルト) MicroStrategy

    デフォルトのランタイムには、Python と mstrio パッケージの最新バージョンのほか、デフォルトのインスタンス サイズとデフォルトのネットワーク アクセス構成が含まれます。ユーザーは、mstrio パッケージを使用して、デフォルトのランタイムで MicroStrategy データにアクセスできます。

    ユーザーはデフォルトのランタイムの構成を変更できません。ユーザーがインスタンス サイズ、ネットワーク アクセス、またはパッケージ構成をカスタマイズする場合は、新しいランタイムを作成する必要があります。

  3. 左側のペインで、の隣にランタイム

  4. 入力してくださいランタイム名そして説明。新しく作成されたランタイムは最新のPython バージョン。既存のランタイムの場合は、最新の Python バージョンにアップグレードできます。デフォルトランタイムインスタンスサイズ0.2 vCPU 0.5 GB のメモリ

  5. ネットワークアクセス、Python ランタイムからアクセスが許可されたネットワークに入ります。フォーマットは以下に従う必要がありますクラスレスドメイン間ルーティング (CIDR)形式は 141.193.213.21/32 などです。

  6. クリック左下にある をクリックして、Python ランタイムにインストールする新しいパッケージを追加します。パッケージのバージョンが指定されていない場合は、最新バージョンがインストールされます。次の形式を使用します: [パッケージ名][空白][パッケージ バージョン]。

    例:

    • リクエスト 2.28.1

    • リクエスト

  7. クリック追加

  8. パッケージは通常、データ ソースへの接続をサポートしてデータの変更を書き戻したり、MicroStrategy API を使用した操作をサポートしたり、Microsoft Teams などの他のアプリケーションに接続したりします。Pypi リンクをクリックすると、ダウンロードする正確なパッケージ名とバージョンが見つかります。

  9. クリック追加ランタイムを保存し、インストールが完了するまで待ちます。ステータスを確認するにはページを更新してください。

役立つヒント:

  • 各フィールド(ネットワークアクセス、パッケージ名、バージョン)を入力した後、クリックする前に必ずEnterキーを押してください。追加またはわかりました変更を確認します。

  • 1 つのランタイムに複数のパッケージを追加できます。

  • ある環境から別の環境にオブジェクトを移行した後、新しい環境にパッケージを再度追加して、ランタイムを準備します。この追加手順がないとランタイムは機能しません。

  • デフォルトでは、みんなビューランタイムの ACL。

カスタム Python スクリプトを作成する

次の権限を持つユーザーを設定します。

  • スクリプトの使用 Python

  • Python スクリプトを承認

  • 次の ACL が推奨されます。

    • 読み取りスクリプトには、スクリプトに対する読み取り ACL が必要です。

    • 更新スクリプトには、スクリプトに対する書き込み ACL が必要です。

    • スクリプトを実行するには、スクリプトに対する実行 ACL とランタイムに対する実行 ACL が必要です。

  1. ワークステーションを開き、環境に接続する
  2. ナビゲーションウィンドウで、の隣にスクリプト

  3. スクリプト設定を開いてスクリプトの種類を変更する取引適切な Python ランタイムを選択します。

  4. ギャラリーからテンプレートを選択して変更するか、最初から作成して、スクリプトの作成を開始します。

  5. スクリプト内の変数は通常、ダッシュボード グリッドの列にマップされます。変数を定義するときは、カラムパラメータはデフォルトでオンになっています。データ ソースへの接続など、変数が内部使用を目的としている場合など、非トランザクション変数の場合はこれをオフにします。

  6. データソース接続パスワードには、非トランザクション型変数を選択します。秘密

  7. ユーザーのログインを記録し、誰がデータを変更しているかを確認するために、システム プロンプト変数を含めることを検討してください。

  8. デフォルトのアクション タイプは、選択、挿入、更新です。これらに加えて、選択と更新の両方を組み合わせた新しいアクションタイプを作成するには、取引タイプ変数型。単一のPythonトランザクションスクリプトでは、1つの変数のみを次のように設定できます。取引タイプ

  9. ライトバック データ ソース内のテーブルの主キーにマップされる変数の場合、コンシューマーが主キーを変更しないようにする必要があります。このような状況では、編集可能パラメータ。

  10. データソース内のNULL値を許可しない列については、この変数を必須としてマークするには、必須パラメータ。

  11. 変数が必須作成者は、データベースの許可内容に応じて、列を空のままにできるかどうかを選択できます。

  12. ユーザーに編集を許可したい列については、編集可能パラメータ。

  13. トランザクション操作には認定されたトランザクション Python スクリプトのみを使用できます。そのため、本番環境での使用準備ができたらスクリプトを認定する必要があります。Python トランザクション グリッドを使用するユーザー グループには、このスクリプトの View ACL が必要です。

ベスト プラクティス

  • サンプル コード テンプレートから学習します。

  • アトミック トランザクションをサポートするデータ ソースの場合は、ランタイムを準備するときに、アトミック トランザクションをサポートするパッケージを選択します。Python スクリプトで、アトミック トランザクションを処理するセクションを追加します。

  • 該当する場合は、パラメータ化されたクエリを使用します。このように実行されるクエリは、クエリとパラメータが別々に送信されて実行されるため、インジェクション攻撃の影響を受けません。

  • Python トランザクション スクリプトの作成者とトランザクション ダッシュボードの作成者は同じ人物ではない可能性があるため、スクリプトとダッシュボードの整合性を確保してください。これには、書き戻すデータ ソース テーブルの定義、Python スクリプトで定義された変数とダッシュボード トランザクション グリッド オブジェクト間の関係のマッピング、どのオブジェクトが編集可能かなどが含まれます。

  • Python スクリプトがサポートする内容 (データの更新、新しいデータの挿入、削除する行の選択、別のテーブルへの挿入、Microsoft Teams メッセージの送信、電子メールの送信など) の詳細な説明をスクリプトに含める必要があります。ダッシュボードの作成者は、ダッシュボード エディターから Python スクリプトの説明を取得できます。適切な権限とACLを持つ人だけがPython scrを開くことができます

関連するPythonスクリプトを使用してダッシュボードを構成する

必要な権限

ダッシュボードでトランザクションを構成するには:

  • Web 構成トランザクション

  • スクリプトの使用 Python

  • 関連スクリプトの ACL を表示する

ダッシュボードを使用して変更を送信できるようにユーザーを設定するには:

  • トランザクションの実行

  • スクリプトの ACL を表示する

その他の基本的なライブラリ Web 権限:

  • Library Web の使用

  • Web作成ダッシュボード

  • Web編集ダッシュボード

  • Web保存ダッシュボード

  • Web実行ダッシュボード

  • アプリケーション オブジェクトの作成

  1. Python ベースのトランザクションは、最新のグリッドで動作するように設計されています。グリッドを選択し、フォーマットパネルを開いてクリックします取引オプション

  2. クリックPythonを使用する

  3. アクション タイプを選択し、カスタマイズされたアクション名、ボタン名などを指定します。

    • アクション タイプは、このダッシュボードでコンシューマーが実行できるようにするアクションです。少なくとも 1 つのアクション タイプを選択する必要があります。

    • アクションに意味のある名前を付け、アクションで何ができるかを説明し、ボタンに名前を付けます。

      例:

      • アクション名顧客年齢の更新

      • 説明顧客年齢列の顧客の年齢を更新してください。

      • ボタン名提出する

    • アクションを組み合わせることができます。たとえば、既存のデータを変更し、同時にデータの行を追加することができます。それに応じて、この動作を反映するアクション名を選択してください。

  4. クリックPythonスクリプトを選択ダッシュボードがあるプロジェクトからすべてのトランザクション Python スクリプトを取得します。デフォルトでは、認定されたスクリプトのみが表示されます。フィルターを使用してリストを移動し、対象のスクリプトを見つけます。

  5. スクリプトを選択すると、マッピング セクションが表示されます。選択したスクリプト名が、スクリプトの説明を示す情報アイコンとともに表示されます。このセクションの右上には、選択したスクリプトを置き換えるアイコンと、メタデータからスクリプト リストを更新するためのアイコンが用意されています。データを必要とする変数にはアスタリスク(*)が付いています。このような場合、構成を保存するためにマッピングを提供する必要があります。

    アクション タイプ

    • グリッド内のデータの変更を許可する編集可能オプションが有効になっています。作成者は、消費者が変更できるようにする変数を選択できます。

    • グリッドにデータを追加する新規データ入力オプションが選択され、消費者が挿入できるようにする変数を選択できます。

    • 選択した行に対してアクションを実行する編集可能そして新規データ入力オプションは両方とも無効になっています。このような場合、行番号がスクリプトに渡されます。スクリプトは、その行に対して実行されるアクションを決定します。たとえば、このアクションを使用してグリッドから行を削除できます。

  6. 入力コントロールを設定するには、グリッドによるトランザクション

  7. クリックアクションを追加し、送信後に表示されるメッセージを構成します。

  8. クリック終わり取引を完了し、保存ダッシュボード。

ベスト プラクティス

  • データの変更を書き戻すためのデータ ソースに応じて、通常は SQL ベースのものが最初の選択肢になります。データ ソースが Web サービスである場合は、Python が推奨されるオプションです。

  • データの変更とメールの送信、Slack の更新などのアクションを組み合わせたより複雑なワークフローの場合は、Python スクリプトを使用します。

  • 入力コントロールの構成を容易にし、グリッド オブジェクトが編集可能かどうかを定義するために、スクリプト変数とグリッド オブジェクトの間に 1 対 1 のマッピング関係を設定することをお勧めします。

データ操作にPythonトランザクションを使用する

  1. Python ベースのトランザクションではインライン編集はサポートされていないため、すべてのデータ変更は一括モードで実行されます。クリック鉛筆アイコンデータの変更を開始します。

  2. 単一のアクションで選択とデータの変更の両方がサポートされます。

  3. 選択、変更、またはデータ挿入をサポートするアクションの場合は、データを追加新しいデータを提供するため。完了したら、クリックします追加

  4. クリック提出する

システム構成の推奨事項

コンテナ化された環境では、コンピューターを実行したままにしておくことなく、MicroStrategy 環境で直接スクリプトを実行できます。これらの環境にスクリプトを保存し、Workstation 内のどこからでもスクリプトにアクセスできるほか、他の管理者にアクセス権を提供することも可能です。現在、サーバーサイド スクリプト実行のサポートは、コンテナー化された環境でのみ有効になっています。

Python トランザクション リクエストのパフォーマンスは、次の方法で向上できます。

ランタイムインスタンスのサイズを調整する

  1. ナビゲーションウィンドウで、モニター

  2. 左側のペインで、ランタイム

  3. グリッドでランタイムを右クリックし、編集

  4. 調整するランタイムインスタンスサイズ

ランタイム サイズを変更する必要があるのはなぜでしょうか。

デフォルトのランタイム サイズは、スクリプトが必要とするメモリーに対して十分でない場合があります。ランタイム サイズを増やすことで、スクリプトをエラーやクラッシュなく実行するのに十分なメモリーを確保できます。たとえば、データ ソースの作成にスクリプトを使用する場合、テーブルの作成に使用するスクリプトがランタイムをメモリーにロードする可能性があるため、より大きなランタイムの使用を推奨します。

大規模な環境を使用する際のリスクには、どのようなものがあるでしょうか。

また、大規模なコンテナー化環境は大量のメモリーを消費するため、ホスト コンピューターのパフォーマンスが低下し、コンテナーがクラッシュする可能性があります。MicroStrategy コンテナーには、Python ランタイム用のメモリが制限されています。現在、コンテナ化された環境では、6 vCPU と 20 GB のメモリに制限されています。コンテナー環境のサイズや複雑さを定期的に評価し、パフォーマンス、セキュリティ、メンテナンスの要件に合致していることを確認することが重要です。リソースの使用量を削減するには、管理スクリプトを小さなランタイムで実行することが最適です。

ランタイム設定を調整する

  1. ナビゲーションウィンドウで、モニター

  2. 左側のペインで、ランタイム

  3. グリッドでランタイムを右クリックし、情報を取得

  4. 左側のペインで、すべての設定

  5. ランタイム設定を調整します。

    スクリプトのタイムアウト (秒) Python スクリプト実行のタイムアウト設定。デフォルト設定は 600 秒です。

    デフォルトのポッドインスタンス番号キャッシュされた Python 実行インスタンスのデフォルトの数。

    Python実行インスタンス PythonスクリプトがPythonランタイムに基づいて実行されている場合、Python実行インスタンスが作成され、デフォルトのポッドインスタンス番号そして最大 Pod インスタンス数 (実行スクリプトの合計制限)設定。

    最大ポッドインスタンス数(スクリプト実行の合計制限)ランタイムに基づいて作成できる Python 実行インスタンスの最大数。

ランタイムデフォルトポッドインスタンス番号 実行時の最大ポッドインスタンス数(実行スクリプトの合計制限) おすすめ
1 1 応答時間に敏感な、使用量と同時実行性が低い一般ユーザー向けです。Python Executor ポッドは常に稼働しているため、ポッドのウォームアップ時間は短縮されますが、全体的なコストは高くなります。常に 1 つのポッドがオンになっています。
1 1以上 使用量が少なく、同時実行性も多少あるが、応答時間にあまり敏感ではない一般ユーザー向けです。1 つの Python Executor ポッドが常に起動しており、リクエストに応じて最大 N-1 個のポッドを起動できるため、この構成ではより多くの同時実行ケースをサポートできます。ユーザーによっては応答時間が良好である一方、ポッドのウォームアップに時間がかかる場合があります。1 つのポッドは常に起動しており、最大 N-1 個のポッドが特定の時間に起動して起動し、2 分以上アイドル状態になると停止します。
0 を超える = デフォルトのポッドインスタンス番号 応答時間に敏感で、同時使用率が高い本格的なユーザー向けです。常に X 個のランタイム ポッドが稼働するため、価格は高くなります。

既知の制限

パフォーマンス

Python リモート実行の現在のロジックは次のとおりです。

  • 特定のランタイム用にカスタマイズされたパッケージのインストールは、エグゼキュータ ポッドが生成され、永続ボリュームが Python エグゼキュータのコンテナにマウントされるときに永続ボリューム上に行われます。

  • Python サービスのメイン プロセスは、リクエストと応答の処理を担当します。実際のスクリプトの実行はサブプロセスによって開始されます。その結果、Python スクリプトが実行されるたびに、Python インタープリターは使用されたパッケージをサブプロセスのメモリにロードしようとします。

コンテナが永続ボリュームにデータをインポートするときにはまだ遅延が発生するため、ポッドがすでにウォームアップされている場合でも、サブプロセスがスクリプトを実行するのに追加の時間コストがかかります。

データソース接続

プライベートオンプレミス データ ソースの場合、Python Executor Pod コンテナーとプライベート データ ソースの間にネットワーク接続がない場合、Python トランザクションはサポートされません。一般的に、パブリック エンドポイントを持つデータ ソースを使用できます。

関連記事

KB486432: Python トランザクション構成の Python スクリプト変数とグリッド フィールドをマッピングするためのベスト プラクティス

KB486431: ダッシュボードで Python スクリプトの変更を Python トランザクション構成と同期する