はじめに
注記: この記事は古いMagic ETLを対象としています。新しいMagic ETLの詳細については、「 Magic ETL 」を参照してください。
注記: これらのタイルは、Domoコンサンプション契約を締結しているユーザーはデフォルトで使用できます。コンサンプション契約を締結していないユーザーの場合、これらのタイルは オンデマンド で 有料 で使用することができます。これらのタイルを有効にするには、Domoアカウントチームにお問い合わせください。タイルを使用する前に、トレーニングが必要となる場合があります。
すべてのスクリプティングタイルに関する一般的な情報
このセクションでは、Magic ETLのすべてのスクリプティングタイルに関する情報を提供します。特定のタイルについては、以下のいずれかのリンクをクリックして、該当するタイルのセクションにジャンプしてください。ツアーを見る
すべてのスクリプティングタイルは同じ外観をしています。唯一の違いはサポートされる言語です。 タイルの本体はコードエディターです。ここはスクリプトを記述する場所です。ここには、タイルがサポートする言語の構文ハイライト表示があります。


があります。このボタンをクリックすると、最初にスクリプティングタイルを開いたときに表示されるサンプルのコードテンプレートへと、スクリプトがリセットされます。既にスクリプトを記述している場合は、このボタンをクリックすると(確認プロンプトの後に)スクリプトが上書きされるので注意が必要です。ただし、タイルを閉じない限り、コードエディター内にカーソルを置いてCommand+zまたはCTRL+zを押すことで、上書きされたスクリプトを元に戻すことができます。
[スキーマ] タブでは、スクリプトの結果をどのようにタイルに表示するかを指定します。これを使用するには、タイルエディターパネルのツールバーで [スキーマ] をクリックします。このタブの詳細については、このドキュメントの「 生成されるスキーマを設定する 」セクションを参照してください。

stdout )と標準エラー( stderr )が表示されます。このタブは、タイルでプレビューが実行されるまで使用できません。プレビューが実行されると、タイルエディターパネルのツールバーのオプションとして表示されます。


スクリプティングタイルにデータを入出力する
Domoには、Domoエコシステムからスクリプトにデータをインポート(読み込み)してから、スクリプトの結果をDomoエコシステムにエクスポート(書き込み)するための基本的なAPIが用意されています。このAPIは、スクリプト言語ごとに異なり、各言語のセマンティクスに従います。注記: Domoでスクリプティングタイルを使用するときには、以下のデータタイプに関する問題に注意してください。
- Pythonでは、LONGがDOUBLEになります。これはNumPYが整数列のNULL値をサポートしていないためです。
- PythonとRでは、DECIMALがDOUBLEになります。これはNumPYまたはRに類似のタイプがないためです。
ステップ1:Domoパッケージをインポートする
スクリプトの最初の行では、言語固有のDomoパッケージをスクリプトにインポートする必要があります。選択した言語の標準のパッケージインポートセマンティクスに従います。これは初期テンプレートコードの一部です。代わりに、コードエディターの右側にある [パッケージ] リストで「domo」を検索し、パッケージをクリックしてコードスニペットをエディターに挿入することもできます。ステップ2:データをスクリプトに読み込む
スクリプトを記述する次のステップは、データにアクセスすることです。各言語には、独自のセマンティックバージョンのDomo「読み込み」メソッドがあります。これは初期コードテンプレートに含まれています。代わりに、コードエディターの右側にある入力リストでいずれかの入力をクリックすることもできます。これにより、入力データを読み込んで変数に格納するコードスニペットが挿入されます。この変数の名前は、必要に応じて変更できます。ステップ3:スクリプトからデータをエクスポートする
スクリプトを記述する最後のステップは、結果をDomoエコシステムに返すことです。各言語には、独自のセマンティックバージョンのDomo「書き込み」メソッドがあります。これも初期コードテンプレートに含まれています。ただし、このためのコードスニペットを挿入する方法はほかにはありません。この「書き込み」メソッドでは、スクリプトの結果を格納している変数の名前を使います。 スクリプトごとに作成できるエクスポートは1つのみです。 このページのトップへ生成されるスキーマを設定する
スクリプトが生成するスキーマをタイルに伝える方法は3つあります。必要に応じて、これらの方法を組み合わせて使用することで適切な結果を得ることができます。これらの手順はすべて、タイルの [スキーマ] タブで行います。列を手動で追加する
列を手動で追加するには、次の手順に従います。-
スクリプトが生成する列の名前を [列名] フィールドに入力します。

-
使用可能なデータタイプのリストで、この列のデータタイプを選択します。

-
[列を追加] ボタンをクリックして別の列を追加します。

列を一括で追加する
列を一括で追加するには、次の手順に従います。- 特定の[入力DataSet]タイルの列を一括で追加します。 [DataSetから追加] ボタンをクリックして入力元の[入力DataSet]タイルを選択します。

- 列の右端にある[X]ボタンを使用して余分な列を削除します。

スクリプトを実行する
Domoにスクリプトを実行させるには:-
タイルエディターパネルのツールバーの右側にある
ボタンか、キャンバスの上部にあるツールバーの [プレビューを実行] ボタンをクリックします(プレビューに問題がある場合は、このドキュメントの「 トラブルシューティング 」セクションを参照してください)。
プレビューの実行が完了すると、新しい列を作成するためのテキスト入力の下にセンテンスが表示されます。このセンテンスは、プレビューが返した列のうち、タイルのスキーマの一部としてリストされていない列の数を示しています。
- センテンスの最後にあるボタンをクリックします。
設定ステップ
これをまだ完了していない場合は、この記事の「 ツアーを見る 」セクションに目を通し、スクリプティングタイルの様々な機能を把握しておいてください。- 新しいMagic ETL DataFlowを起動します。
- [入力DataSet]タイルをキャンバスにドラッグし、使用するDataSetを選択します。 左側のスライドバーの[データサイエンス]セクションにスクリプティングタイルがあります。
-
記述する言語に対応するスクリプティングタイルをキャンバスにドラッグし、[入力DataSet]からこのスクリプティングタイルに接続をドラッグします。

-
(条件付き)画面の下にエディターパネルが開いていない場合は、先ほどキャンバスに追加したスクリプティングタイルをクリックして選択すると、エディターパネルが開きます。
コードエディターには、初期コードテンプレートが自動で記述されます。テンプレートの内容に関する詳細は、このドキュメントの「 スクリプティング操作にデータを入出力する 」セクションを参照してください。黄色のバナーも表示されます。これは現段階では無視してください。後で設定ステップのところで説明します。
テンプレートがスクリプティングタイルに接続されている[入力DataSet]タイルからデータを取得し、変数に格納していることが分かります。これがスクリプトで操作する必要がある変数です。

-
(条件付き)データソースが複数ある場合は、別の[入力DataSet]タイルをドラッグして必要な次のDataSetを選択し、このタイルをスクリプティング操作に接続して、別のインポートステートメントをスクリプトに追加します。
データを保持する変数を作成している行の下に、スクリプトを記述するスペースが表示されます。


- 表示されている行にスクリプトを記述し、テンプレートの最下部にあるエクスポートステートメントがスクリプトの最終生成物を表す変数をエクスポートしていることを確認します。 タイルがまだ設定済みとしてマークされておらず、そのことを知らせる黄色のバナーがタイルの上部にまだ表示されていることが分かります。これはスクリプトの結果がどのようになるかをタイルがまだ認識していないためです。
-
タイルにこの情報を提供するには:
- タイルエディターパネルのツールバーで [スキーマ] タブをクリックします。
- この記事の「 生成されるスキーマを設定する 」セクションに記載されている方法のいずれかを選択し、そのステップに従います。その後、以下に示すステップを続行します。
- [出力DataSet]タイルをスライドバーからドラッグし、キャンバスにドロップします。
-
スクリプティングタイルから、この新しい[出力DataSet]タイルに接続をドラッグします。

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