メインコンテンツへスキップ

はじめに

注記: この記事は古いMagic ETLを対象としています。新しいMagic ETLの詳細については、「 Magic ETL 」を参照してください。
スクリプティングタイルは、DomoのMagic ETL機能の強力なツールです。この機能を使用すると、カスタムのRまたはPythonアルゴリズムを記述して、DataFlowに直接実装できます。これにより、データが更新されるたびに実行される複雑なデータサイエンス分析を作成できます。
注記: これらのタイルは、Domoコンサンプション契約を締結しているユーザーはデフォルトで使用できます。コンサンプション契約を締結していないユーザーの場合、これらのタイルは オンデマンド有料 で使用することができます。これらのタイルを有効にするには、Domoアカウントチームにお問い合わせください。タイルを使用する前に、トレーニングが必要となる場合があります。


すべてのスクリプティングタイルに関する一般的な情報

このセクションでは、Magic ETLのすべてのスクリプティングタイルに関する情報を提供します。特定のタイルについては、以下のいずれかのリンクをクリックして、該当するタイルのセクションにジャンプしてください。

ツアーを見る

すべてのスクリプティングタイルは同じ外観をしています。唯一の違いはサポートされる言語です。 タイルの本体はコードエディターです。ここはスクリプトを記述する場所です。ここには、タイルがサポートする言語の構文ハイライト表示があります。
scripting_actions_code_editor.png
タイルの右側には、スクリプティングタイルに現在接続されている入力タイルを検索するためのリストがあります。入力の名前をクリックすると、スクリプト内のカーソルの位置にコードスニペットが挿入されます。このコードスニペットは、データをスクリプトに読み込み、変数に保存します。変数名は好きな名前に変更できます。
scripting_actions_inputs.png
タイルの右側には、 [パッケージ] という名前の2番目のタブがあります。このタブをクリックすると、サポートされる言語の使用可能なパッケージを検索するためのリストが表示されます。パッケージ名の上にカーソルを合わせると、説明が表示されます。また、表示される矢印をクリックすると、パッケージのドキュメントがあるウェブサイトに移動します。入力と同様に、パッケージをクリックすると、スクリプト内のカーソルの位置にコードスニペットが挿入されます。このコードスニペットは、スクリプトで使用するために選択されたライブラリをインポートします。
scripting_actions_packages.png
タイルエディターパネルのツールバーの右側には、テンプレートアイコンボタン があります。このボタンをクリックすると、最初にスクリプティングタイルを開いたときに表示されるサンプルのコードテンプレートへと、スクリプトがリセットされます。既にスクリプトを記述している場合は、このボタンをクリックすると(確認プロンプトの後に)スクリプトが上書きされるので注意が必要です。ただし、タイルを閉じない限り、コードエディター内にカーソルを置いてCommand+zまたはCTRL+zを押すことで、上書きされたスクリプトを元に戻すことができます。 [スキーマ] タブでは、スクリプトの結果をどのようにタイルに表示するかを指定します。これを使用するには、タイルエディターパネルのツールバーで [スキーマ] をクリックします。このタブの詳細については、このドキュメントの「 生成されるスキーマを設定する 」セクションを参照してください。
scripting_actions_schema.png
[コンソール] タブには、スクリプトが生成する標準出力( stdout )と標準エラー( stderr )が表示されます。このタブは、タイルでプレビューが実行されるまで使用できません。プレビューが実行されると、タイルエディターパネルのツールバーのオプションとして表示されます。
scripting_actions_console.png
[プレビュー] タブには、スクリプトの実行結果が表示されます。このタブも、プレビューが実行されるまで表示されません。プレビューが実行されると、タイルエディターパネルのツールバーのオプションとして表示されます。
scripting_actions_preview.png
このページのトップへ

スクリプティングタイルにデータを入出力する

Domoには、Domoエコシステムからスクリプトにデータをインポート(読み込み)してから、スクリプトの結果をDomoエコシステムにエクスポート(書き込み)するための基本的なAPIが用意されています。このAPIは、スクリプト言語ごとに異なり、各言語のセマンティクスに従います。
注記: Domoでスクリプティングタイルを使用するときには、以下のデータタイプに関する問題に注意してください。
  • Pythonでは、LONGがDOUBLEになります。これはNumPYが整数列のNULL値をサポートしていないためです。
  • PythonとRでは、DECIMALがDOUBLEになります。これはNumPYまたはRに類似のタイプがないためです。
言語固有のAPIコールを確認する最も簡単な方法は、新規作成され、接続されたスクリプティングタイルで提供される初期コードテンプレートを調べることです。

ステップ1:Domoパッケージをインポートする

スクリプトの最初の行では、言語固有のDomoパッケージをスクリプトにインポートする必要があります。選択した言語の標準のパッケージインポートセマンティクスに従います。これは初期テンプレートコードの一部です。代わりに、コードエディターの右側にある [パッケージ] リストで「domo」を検索し、パッケージをクリックしてコードスニペットをエディターに挿入することもできます。

ステップ2:データをスクリプトに読み込む

スクリプトを記述する次のステップは、データにアクセスすることです。各言語には、独自のセマンティックバージョンのDomo「読み込み」メソッドがあります。これは初期コードテンプレートに含まれています。代わりに、コードエディターの右側にある入力リストでいずれかの入力をクリックすることもできます。これにより、入力データを読み込んで変数に格納するコードスニペットが挿入されます。この変数の名前は、必要に応じて変更できます。

ステップ3:スクリプトからデータをエクスポートする

スクリプトを記述する最後のステップは、結果をDomoエコシステムに返すことです。各言語には、独自のセマンティックバージョンのDomo「書き込み」メソッドがあります。これも初期コードテンプレートに含まれています。ただし、このためのコードスニペットを挿入する方法はほかにはありません。この「書き込み」メソッドでは、スクリプトの結果を格納している変数の名前を使います。 スクリプトごとに作成できるエクスポートは1つのみです。 このページのトップへ

生成されるスキーマを設定する

スクリプトが生成するスキーマをタイルに伝える方法は3つあります。必要に応じて、これらの方法を組み合わせて使用することで適切な結果を得ることができます。これらの手順はすべて、タイルの [スキーマ] タブで行います。

列を手動で追加する

列を手動で追加するには、次の手順に従います。
  1. スクリプトが生成する列の名前を [列名] フィールドに入力します。
    scripting_actions_manual_column_name.png
  2. 使用可能なデータタイプのリストで、この列のデータタイプを選択します。
    scripting_actions_manual_data_type.png
  3. [列を追加] ボタンをクリックして別の列を追加します。
    scripting_actions_manual_add_column.png
    重要: タイルの設定を完了するには、追加したすべての列に値を入力する 必要があります

列を一括で追加する

列を一括で追加するには、次の手順に従います。
  1. 特定の[入力DataSet]タイルの列を一括で追加します。 [DataSetから追加] ボタンをクリックして入力元の[入力DataSet]タイルを選択します。
scripting_actions_bulk_add_from_dataset.png
  1. 列の右端にある[X]ボタンを使用して余分な列を削除します。
scripting_actions_bulk_schema_output.png

スクリプトを実行する

Domoにスクリプトを実行させるには:
  1. タイルエディターパネルのツールバーの右側にある ボタンか、キャンバスの上部にあるツールバーの [プレビューを実行] ボタンをクリックします(プレビューに問題がある場合は、このドキュメントの「 トラブルシューティング 」セクションを参照してください)。 プレビューの実行が完了すると、新しい列を作成するためのテキスト入力の下にセンテンスが表示されます。このセンテンスは、プレビューが返した列のうち、タイルのスキーマの一部としてリストされていない列の数を示しています。
  2. センテンスの最後にあるボタンをクリックします。
スキーマを設定すると、スクリプトの結果がどのようなものかがタイルに伝わり、タイルが設定済みとしてマークされます(スクリプトが記述されていることが前提)。 [スキーマ] タブに表示される列は、DataFlowの次のタイルに渡されます。 このページのトップへ

設定ステップ

これをまだ完了していない場合は、この記事の「 ツアーを見る 」セクションに目を通し、スクリプティングタイルの様々な機能を把握しておいてください。
  1. 新しいMagic ETL DataFlowを起動します。
  2. [入力DataSet]タイルをキャンバスにドラッグし、使用するDataSetを選択します。 左側のスライドバーの[データサイエンス]セクションにスクリプティングタイルがあります。
  3. 記述する言語に対応するスクリプティングタイルをキャンバスにドラッグし、[入力DataSet]からこのスクリプティングタイルに接続をドラッグします。
    scripting_actions_configure1.png
  4. (条件付き)画面の下にエディターパネルが開いていない場合は、先ほどキャンバスに追加したスクリプティングタイルをクリックして選択すると、エディターパネルが開きます。 コードエディターには、初期コードテンプレートが自動で記述されます。テンプレートの内容に関する詳細は、このドキュメントの「 スクリプティング操作にデータを入出力する 」セクションを参照してください。黄色のバナーも表示されます。これは現段階では無視してください。後で設定ステップのところで説明します。 テンプレートがスクリプティングタイルに接続されている[入力DataSet]タイルからデータを取得し、変数に格納していることが分かります。これがスクリプトで操作する必要がある変数です。
    scripting_actions_code_editor.png
  5. (条件付き)データソースが複数ある場合は、別の[入力DataSet]タイルをドラッグして必要な次のDataSetを選択し、このタイルをスクリプティング操作に接続して、別のインポートステートメントをスクリプトに追加します。
    scripting_actions_configure2.png
    データを保持する変数を作成している行の下に、スクリプトを記述するスペースが表示されます。
    scripting_actions_configure3.png
  6. 表示されている行にスクリプトを記述し、テンプレートの最下部にあるエクスポートステートメントがスクリプトの最終生成物を表す変数をエクスポートしていることを確認します。 タイルがまだ設定済みとしてマークされておらず、そのことを知らせる黄色のバナーがタイルの上部にまだ表示されていることが分かります。これはスクリプトの結果がどのようになるかをタイルがまだ認識していないためです。
  7. タイルにこの情報を提供するには:
    1. タイルエディターパネルのツールバーで [スキーマ] タブをクリックします。
    2. この記事の「 生成されるスキーマを設定する 」セクションに記載されている方法のいずれかを選択し、そのステップに従います。その後、以下に示すステップを続行します。
  8. [出力DataSet]タイルをスライドバーからドラッグし、キャンバスにドロップします。
  9. スクリプティングタイルから、この新しい[出力DataSet]タイルに接続をドラッグします。
    scripting_actions_configure4.png
  10. [出力DataSet]タイルを開き、名前を付けて説明を入力します。 これでタイルがDataFlow内に完全に設定されます。
  11. 次に、左上隅にあるフィールドにDataFlowの名前を入力します。
  12. キャンバスのツールバーの [設定] ボタンを使用してパネルの設定を行います。
  13. DataFlowを保存します。
おめでとうございます。スクリプティングタイルを活用するDataFlowが作成できました。これは、1つの[入力DataSet]タイル、1つのスクリプティングタイル、1つの[出力DataSet]タイルのみを使用するごく基本的な設定でした。スクリプティングタイルの前後に、従来のすべてのDataFlowタイルを使用してデータを操作できることも、覚えておいてください。 このページのトップへ

APIリファレンス

domomagicは、Magic ETLの「Pythonアクション」と「Rアクション」の作成者に提供されるシンプルなAPIで、これにより、PythonとRコンテキストの間でデータの読み込み/読み込み解除ができるようになります。

PythonモジュールのAPIリファレンス

メソッドシグネチャ

パラメーター

戻り値

read_dataframe(input_name=None)

input_name: Magic ETL入力タイルの名前。使用可能な入力が1つしかない場合は必要ありません。

入力タイルを表すPandas DataFrame。

write_dataframe(dataframe)

dataframe: Magic ETLのタイルの出力として使用されるPandas DataFrame。

該当なし
read_array(column_name,input_name=None) column_name: 列の名前。

input_name: Magic ETL入力タイルの名前。使用可能な入力が1つしかない場合は必要ありません。
入力から得られる単一の列。NumPy配列として表現。
read_array_dict(input_name=None) input_name: Magic ETL入力タイルの名前。使用可能な入力が1つしかない場合は必要ありません。 列名のOrderedDictとしてNumPy配列にマップされる入力。
write_array_dict(array_dict) array_dict: Magic ETLコンテキストへの出力としてNumPy配列にマップされる列名のディクショナリ。配列は同じ長さでなければなりません。 該当なし
このページのトップへ

RパッケージのAPIリファレンス

メソッドシグネチャ

パラメーター

戻り値

read.dataframe(input.name =NULL、以下を参照)

input.name Magic ETL入力タイルの名前。使用可能な入力が1つしかない場合は必須ではありません。

入力タイルのdata.frame。

write.dataframe(table)

table data.frameまたはマトリックスをMagic ETLのタイルの出力としてエクスポートします。

該当なし

Rパッケージの read.dataframe 関数は、以下のパラメーターもサポートしており、動作をカスタマイズできます。

パラメーター

説明

colClasses

名前付きの列に割り当てられる、クラスの名前付きの文字ベクトル。

stringsAsFactors

文字列列を要素として読み込むかどうかを指定する論理値。デフォルトはfalseで、colClassesによって上書きされます。

integersAsNumerics

整数を数値(浮動小数点数)として読み込むかどうかを指定する論理値。デフォルトはtrueで、colClassesによって上書きされます。

allVerbatimExcept

デフォルトの動作に従って読み込まれる列名の文字ベクトル。その他の列はすべて文字列として逐字的に読み込まれ、元のタイプで書き込まれます。Rコンテキストとの間で変換を行うと精度が失われるかエラーが発生し、実行される計算に列が必要ない場合に役立ちます。

allIgnoredExcept

読み込まれる列名の文字ベクトル。その他の列はすべて無視されます。

このページのトップへ

トラブルシューティング

  • スクリプトを記述した後にタイルが設定済みとしてマークされない場合は、生成されるスキーマを提供したことを確認してください。詳細は、この記事の「 生成されるスキーマを設定する 」セクションを参照してください。
  • プレビューを実行することは、スクリプトの動作に関するフィードバックを得るための最も簡単な方法です。プレビューを実行するには、タイルエディターパネルのツールバーの右側にあるプレビューボタンか、キャンバスの上部にあるツールバーの[プレビュー]ボタンをクリックします
  • プレビューを実行すると、タイルエディターパネルのツールバーに [コンソール] タブが表示されます。このタブには、スクリプトが生成する標準出力( stdout )と標準エラー( stderr )が表示されます。プレビューが失敗する場合は、コンソールにエラーが表示されていないか確認してください。
  • スクリプトが失敗する場合は、この記事の「 スクリプティング操作にデータを入出力する 」セクションに記載されている3つのステップすべてを適切に実行したことを確認してください。Domoに書き込む変数の名前を再確認し、その名前が正しいことを確認してください。
  • プレビューはサンプルのDataSetに対してのみ実行されます。スクリプトが正常に機能するためにデータにいくらかの可変性が必要な場合は、プレビューで取り込んだサンプルがこの可変性要件を満たさない場合があります。キャンバスのツールバーの 行の上限 を変更することで、プレビューサンプルのサイズを設定できます。
    注記: サンプルのサイズが大きいと、プレビューの実行時間が長くなります。
  • スクリプトの実行に必要なパッケージ/ライブラリを明示的にインポートしましたか。使用可能なパッケージのリストは、コードエディターの右側のセクションの [パッケージ] タブにあります。
  • 列のすべての値がNULL値になる場合は、スクリプトによって列が実際には生成されていない可能性があります。ある列が [スキーマ] タブのリストに表示されている場合、その列は、スクリプトが実際にその列を生成するかどうかに関係なく、結果に追加されます。スクリプトが列を生成しない場合は、その列のすべての値がNULL値に設定されます。プレビューを実行してから [スキーマ] タブを調べることで、スクリプトによって作成される列と作成されない列を確認できます。各列のステータスは、列データタイプの右側に表示されます。
  • スクリプトが実行時にメモリー不足エラーで失敗する場合は、入力DataSetが大きすぎるか、スクリプトがデータの急増を引き起こす何らかのJoin処理を実行している可能性があります。その場合、データがスクリプティングタイルに挿入される前にデータにフィルターをかけたり、データの急増を防ぐためにスクリプトをリファクタリングしたりしてみてください。
このページのトップへ 日本語