> ## Documentation Index
> Fetch the complete documentation index at: https://domoinc-openapi-sync-dataflows.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Magic ETLのタイル：スクリプティング

export const InlineImage = ({src, alt = '', height = '1.6em'}) => {
  return <img noZoom src={src} alt={alt} style={{
    display: 'inline',
    verticalAlign: 'start',
    height: height,
    margin: '0'
  }} />;
};

### はじめに

Magic ETLでは、PythonスクリプトとRスクリプトの2つのスクリプティングタイルを使用できます。

<Note>
  **注：** これらのタイルは、Domoコンサンプション契約を締結しているユーザーはデフォルトで使用できます。

  コンサンプション契約を締結していないユーザーの場合は、これらのタイルは *オンデマンド* で *有料* で使用することができます。スクリプティングタイルを有効にするには、Domoアカウントチームにご連絡ください。タイルを使用する前に、トレーニングが必要となる場合があります。
</Note>

<Frame>
  <img alt="Screenshot 2023-04-27 at 8.46.52 PM.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/YnZ-qckvNLvJGrb6/images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000006ub6K.jpg?fit=max&auto=format&n=YnZ-qckvNLvJGrb6&q=85&s=7aeaee18cf6bf6a1000b11a9587be7d4" style={{width: 298, height: 158}} width="614" height="326" data-path="images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000006ub6K.jpg" />
</Frame>

***

* [全般的な情報](#general_information)
  * [ツアーを見る](#take_a_tour)
  * [スクリプティングタイルにデータを入出力する](#get_data_in_and_out)
  * [生成されるスキーマを設定する](#populate_the_schema)
    * [列を手動で追加する](#manually_add_columns)
    * [列を一括で追加する](#bulk_add_columns)
    * [スクリプトを実行する](#run_script)
* [設定ステップ](#configuration_steps)
* [APIリファレンス](#api_reference)
  * [Python APIリファレンス](#python_api_reference)
  * [R APIリファレンス](#r_api_reference)
* [プロジェクトディレクトリと/tmpディレクトリ](#directories_in_scripting_tiles)

  * [プロジェクトディレクトリ](#project_directory)
  * [/tmpディレクトリ](#tmp_directory)
* [トラブルシューティング](#troubleshooting)

***

### 全般的な情報

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

* [PythonパッケージのAPIリファレンス](#python_api_reference "ETL操作：スクリプティング")
* [RパッケージのAPIリファレンス](#r_api_reference "ETLのスクリプティング操作")

スクリプティングタイルは、Magic ETLの強力なツールです。この機能を使用すると、カスタムのRまたはPythonアルゴリズムを記述して、DataFlowに直接実装できます。これらを使用して、データが更新されるたびに実行される複雑なデータサイエンス分析を作成できます。

# ツアーを見る

すべてのスクリプティングタイルは同じ外観をしています。唯一の違いはサポートされる言語です。

タイルの本体はコードエディターです。ここはスクリプトを記述する場所です。ここには、タイルがサポートする言語の構文ハイライト表示があります。

<Frame>
  <img alt="scripting_actions_code_editor.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/YnZ-qckvNLvJGrb6/images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNjJ.png?fit=max&auto=format&n=YnZ-qckvNLvJGrb6&q=85&s=2f6f9a096d361b03c92e496171a992cd" width="550" height="184" data-path="images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNjJ.png" />
</Frame>

タイルの右側には、スクリプティングタイルに現在接続されている入力タイルを検索するためのリストがあります。入力の名前をクリックすると、スクリプト内のカーソルの位置にコードスニペットが挿入されます。このコードスニペットは、データをスクリプトに読み込み、変数に保存します。変数名は好きな名前に変更できます。

<Frame>
  <img alt="scripting_actions_inputs.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/YnZ-qckvNLvJGrb6/images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNjU.png?fit=max&auto=format&n=YnZ-qckvNLvJGrb6&q=85&s=4c5fb1b635f35a8f90ba9c5428692506" width="250" height="341" data-path="images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNjU.png" />
</Frame>

タイルの右側には、 **［パッケージ］** という名前の2番目のタブがあります。このタブをクリックすると、サポートされる言語の使用可能なパッケージを検索するためのリストが表示されます。パッケージ名の上にカーソルを合わせると、説明が表示されます。また、表示される矢印をクリックすると、パッケージのドキュメントがあるウェブサイトに移動します。入力と同様に、パッケージをクリックすると、スクリプト内のカーソルの位置にコードスニペットが挿入されます。このコードスニペットは、スクリプトで使用するために選択されたライブラリをインポートします。

<Frame>
  <img alt="scripting_actions_packages.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/YnZ-qckvNLvJGrb6/images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNjL.png?fit=max&auto=format&n=YnZ-qckvNLvJGrb6&q=85&s=b619a4a8955886719a43a527ad01f591" width="250" height="371" data-path="images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNjL.png" />
</Frame>

タイルエディターパネルのツールバーの右側には、テンプレートアイコンボタン <InlineImage src="/images/kb/ja/ka0Vq0000001oUE-00N5w00000Ri7BU-0EM5w000005vNjg.png" /> があります。このボタンをクリックすると、最初にスクリプティングタイルを開いたときに表示されるサンプルのコードテンプレートへと、スクリプトがリセットされます。既にスクリプトを記述している場合は、このボタンをクリックすると（確認プロンプトの後に）スクリプトが上書きされるので注意が必要です。ただし、タイルを閉じない限り、コードエディター内にカーソルを置いてCommand+zまたはCTRL+zを押すことで、上書きされたスクリプトを元に戻すことができます。

**［スキーマ］** タブでは、スクリプトの結果をどのようにタイルに表示するかを指定します。このタブを使用するには、タイルエディターパネルのツールバーで **［スキーマ］** をクリックします。このタブの詳細については、この記事の「 [生成されるスキーマを設定する](#populate_the_schema "ETLのスクリプティング操作") 」セクションを参照してください。

<Frame>
  <img alt="scripting_actions_schema.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/YnZ-qckvNLvJGrb6/images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNjM.png?fit=max&auto=format&n=YnZ-qckvNLvJGrb6&q=85&s=beb7365862862c104ee598677994add9" width="700" height="341" data-path="images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNjM.png" />
</Frame>

**［コンソール］** タブには、スクリプトが生成する標準出力（ `stdout` ）と標準エラー（ `stderr` ）が表示されます。このタブは、タイルでプレビューが実行されるまで使用できません。プレビューが実行されると、タイルエディターパネルのツールバーのオプションとして表示されます。

<Frame>
  <img alt="scripting_actions_console.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/YnZ-qckvNLvJGrb6/images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNjc.png?fit=max&auto=format&n=YnZ-qckvNLvJGrb6&q=85&s=3a12ff68918fb5bb0446c641b2e43070" width="576" height="158" data-path="images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNjc.png" />
</Frame>

**［プレビュー］** タブには、スクリプトの実行結果が表示されます。このタブも、プレビューが実行されるまで表示されません。プレビューが実行されると、タイルエディターパネルのツールバーのオプションとして表示されます。

<Frame>
  <img alt="scripting_actions_preview.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/YnZ-qckvNLvJGrb6/images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNji.png?fit=max&auto=format&n=YnZ-qckvNLvJGrb6&q=85&s=0eb6592b7e31a8cabbc96fb021806dc9" width="650" height="265" data-path="images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNji.png" />
</Frame>

[このページのトップへ](#intro)

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

Domoには、Domoエコシステムからスクリプトにデータをインポート（読み込み）してから、スクリプトの結果をDomoエコシステムにエクスポート（書き込み）するための基本的なAPIが用意されています。このAPIは、スクリプト言語ごとに異なり、各言語のセマンティクスに従います。

<Note>
  **注記：** Domoでスクリプティングタイルを使用するときには、以下のデータタイプに関する問題に注意してください。

  * Pythonでは、LONGがDOUBLEになります。これはNumPYが整数列のNULL値をサポートしていないためです。
  * PythonとRでは、DECIMALがDOUBLEになります。これはNumPYまたはRに類似のタイプがないためです。
</Note>

言語固有のAPIコールを確認する最も簡単な方法は、新規作成され、接続されたスクリプティングタイルで提供される初期コードテンプレートを調べることです。

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

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

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

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

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

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

[このページのトップへ](#intro)

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

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

#### 列を手動で追加する

列を手動で追加するには、次の手順に従います。

1. スクリプトが生成する列の名前を **［列名］** フィールドに入力します。

   <Frame>
     <img alt="scripting_actions_manual_column_name.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/YnZ-qckvNLvJGrb6/images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNjG.png?fit=max&auto=format&n=YnZ-qckvNLvJGrb6&q=85&s=19c510acf7ff50529fc3ea2c828f1a6c" width="700" height="256" data-path="images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNjG.png" />
   </Frame>
2. 使用可能なデータタイプのリストで、この列のデータタイプを選択します。

   <Frame>
     <img alt="scripting_actions_manual_data_type.png" src="https://mintlify.s3.us-west-1.amazonaws.com/domoinc-openapi-sync-dataflows/images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNjm.png" />
   </Frame>
3. **［列を追加］** ボタンをクリックして別の列を追加します。

   <Frame>
     <img alt="scripting_actions_manual_add_column.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/YnZ-qckvNLvJGrb6/images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNjR.png?fit=max&auto=format&n=YnZ-qckvNLvJGrb6&q=85&s=dad454a01ea28e891b0f32ee10c2774d" width="700" height="262" data-path="images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNjR.png" />
   </Frame>

   <Warning>
     **重要：** タイルの設定を完了するには、追加したすべての列に値を入力する *必要があります* 。
   </Warning>

[このページのトップへ](#intro)

#### 列を一括で追加する

列を一括で追加するには、次の手順に従います。

1. 特定の［入力DataSet］タイルの列を一括で追加します。
   **［DataSetから追加］** ボタンをクリックして入力元の［入力DataSet］タイルを選択します。

<Frame>
  <img alt="scripting_actions_bulk_add_from_dataset.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/YnZ-qckvNLvJGrb6/images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNjT.png?fit=max&auto=format&n=YnZ-qckvNLvJGrb6&q=85&s=6dead14ccf8385c2371eec9c8fa13f2e" width="700" height="299" data-path="images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNjT.png" />
</Frame>

2. 列の右端にある［X］ボタンを使用して余分な列を削除します。

<Frame>
  <img alt="scripting_actions_bulk_schema_output.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/YnZ-qckvNLvJGrb6/images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNjO.png?fit=max&auto=format&n=YnZ-qckvNLvJGrb6&q=85&s=5e0e784330292ad56e6eb7f059451fb7" width="884" height="829" data-path="images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNjO.png" />
</Frame>

#### スクリプトを実行する

Domoにスクリプトを実行させるには、次の手順に従います。

1. タイルエディターパネルのツールバーの右側にある
   <InlineImage src="/images/kb/ja/ka0Vq0000001oUE-00N5w00000Ri7BU-0EM5w000005vNjV.png" /> ボタンか、キャンバスの上部にあるツールバーの **［プレビューを実行］** ボタンをクリックします（プレビューに問題がある場合は、この記事の「 [トラブルシューティング](#troubleshooting "ETLのスクリプティング操作") 」セクションを参照してください）。

   プレビューの実行が完了すると、新しい列を作成するためのテキスト入力の下にセンテンスが表示されます。このセンテンスは、プレビューが返した列のうち、タイルのスキーマの一部としてリストされていない列の数を示しています。
2. センテンスの最後にあるボタンをクリックします。

スキーマを設定すると、スクリプトの結果がどのようなものかがタイルに伝わり、タイルが設定済みとしてマークされます（スクリプトが記述されていることが前提）。

**［スキーマ］** タブに表示される列は、DataFlowの次のタイルに渡されます。

[このページのトップへ](#intro)

### 設定ステップ

これをまだ完了していない場合は、この記事の「 [ツアーを見る](#take_a_tour "ETLのスクリプティング操作") 」セクションに目を通し、スクリプティングタイルの様々な機能を把握しておいてください。

1. 新しいMagic ETL DataFlowを起動します。
2. **［入力DataSet］** タイルをキャンバスにドラッグし、使用するDataSetを選択します。

   左側のスライドバーの［データサイエンス］セクションにスクリプティングタイルがあります。
3. 記述する言語に対応するスクリプティングタイルをキャンバスにドラッグし、［入力Dataset］からこのスクリプティングタイルに接続をドラッグします。

   <Frame>
     <img alt="Python_1.png" src="https://mintlify.s3.us-west-1.amazonaws.com/domoinc-openapi-sync-dataflows/images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNjo.png" />
   </Frame>
4. （条件付き）画面の下にエディターパネルが開いていない場合は、先ほどキャンバスに追加したスクリプティングタイルをクリックして選択すると、エディターパネルが開きます。

   コードエディターには、初期コードテンプレートが自動で記述されます。テンプレートの内容に関する詳細は、前述の「 [スクリプティングタイルにデータを入出力する](#GET_DATA_IN_AND_OUT "ETLのスクリプティング操作") 」を参照してください 。黄色のバナーも表示されます。これは現段階では無視してください。後で設定ステップのところで説明します。

   テンプレートがスクリプティングタイルに接続されている［入力DataSet］タイルからデータを取得し、変数に格納していることが分かります。これがスクリプトで操作する必要がある変数です。

   <Frame>
     <img alt="scripting_actions_code_editor__1_.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/YnZ-qckvNLvJGrb6/images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNjJ.png?fit=max&auto=format&n=YnZ-qckvNLvJGrb6&q=85&s=2f6f9a096d361b03c92e496171a992cd" width="550" height="184" data-path="images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNjJ.png" />
   </Frame>
5. （条件付き）データソースが複数ある場合は、別の［入力Dataset］タイルをドラッグして必要な次のDataSetを選択し、このタイルをスクリプティングタイルに接続して別のインポートステートメントをスクリプトに追加します。

   <Frame>
     <img alt="Python_2.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/YnZ-qckvNLvJGrb6/images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNjB.png?fit=max&auto=format&n=YnZ-qckvNLvJGrb6&q=85&s=dfbd0f6586de2ba797acbf3e24c35026" width="890" height="828" data-path="images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNjB.png" />
   </Frame>

   データを保持する変数を作成している行の下に、スクリプトを記述するスペースが表示されます。

   <Frame>
     <img alt="scripting_actions_configure3.png" src="https://mintlify.s3.us-west-1.amazonaws.com/domoinc-openapi-sync-dataflows/images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNjd.png" />
   </Frame>
6. 表示されている行にスクリプトを記述し、テンプレートの最下部にあるエクスポートステートメントがスクリプトの最終生成物を表す変数をエクスポートしていることを確認します。

   タイルがまだ設定済みとしてマークされておらず、そのことを知らせる黄色のバナーがタイルの上部にまだ表示されていることが分かります。これはスクリプトの結果がどのようになるかをタイルがまだ認識していないためです。
7. タイルにこの情報を提供するには：

   1. タイルエディターパネルのツールバーで **［スキーマ］** タブをクリックします。
   2. この記事の「
      [生成されるスキーマを設定する](#populate_the_schema "ETLのスクリプティング操作") 」セクションに記載されている方法のいずれかを選択し、そのステップに従います。その後、以下に示すステップを続行します。
8. ［出力DataSet］タイルをスライドバーからドラッグし、キャンバスにドロップします。
9. スクリプティングタイルからこの新しい［出力DataSet］タイルに接続をドラッグします。

   <Frame>
     <img alt="Python_3.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/YnZ-qckvNLvJGrb6/images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNje.png?fit=max&auto=format&n=YnZ-qckvNLvJGrb6&q=85&s=ef385379cdf0cf592fbee623d0c20949" width="886" height="836" data-path="images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNje.png" />
   </Frame>
10. ［出力DataSet］タイルを選択してタイルエディターを開き、そのタイルの名前と説明を入力します。

    これでタイルがDataFlow内に完全に設定されます。
11. 次に、左上隅にあるフィールドにDataFlowの名前を入力します。
12. キャンバスのツールバーの **［設定］** ボタンを使用してパネルの設定を行います。
13. DataFlowを保存します。

おめでとうございます。スクリプティングタイルを活用するDataFlowが作成できました。これは、1つの［入力DataSet］タイル、1つのスクリプティングタイル、1つの［出力DataSet］タイルのみを使用するごく基本的な設定です。スクリプティングタイルの前後に、従来のすべてのDataFlowタイルを使用してデータを操作できることも、覚えておいてください。

[このページのトップへ](#intro)

### APIリファレンス

domomagicは、Magic ETLの「Pythonタイル」と「Rタイル」の作成者の両方に提供されるシンプルなAPIで、PythonとRのコンテキストの間でデータをロード/アンロードできるようにします。

# PythonスクリプトタイルモジュールのAPIリファレンス

<Frame>
  <img alt="Python_Script.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/YnZ-qckvNLvJGrb6/images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNjW.png?fit=max&auto=format&n=YnZ-qckvNLvJGrb6&q=85&s=f771d101aa9b4eadd0a4edef66a7686f" style={{width: 104, height: 100}} width="101" height="97" data-path="images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNjW.png" />
</Frame>

<table class="mt-responsive-table" data-aura-rendered-by="33:203;a"><thead><tr><th colspan="1" rowspan="1"><p> メソッドシグネチャー </p></th><th colspan="1" rowspan="1"><p> パラメーター </p></th><th colspan="1" rowspan="1"><p> 戻り値 </p></th></tr></thead><tbody><tr><td colspan="1" rowspan="1"><p><code> read\_dataframe(input\_name=None) </code></p></td><td colspan="1" rowspan="1"><p><em> input\_name： </em> Magic ETL入力タイルの名前。使用可能な入力が1つしかない場合は必要ありません。 </p></td><td colspan="1" rowspan="1"><p> 入力タイルを表すPandas DataFrame。 </p></td></tr><tr><td colspan="1" rowspan="1"><p><code> write\_dataframe(dataframe) </code></p></td><td colspan="1" rowspan="1"><p><em> dataframe： </em> Magic ETLのタイルの出力として使用されるPandas DataFrame。 </p></td><td colspan="1" rowspan="1"> 該当なし </td></tr><tr><td colspan="1" rowspan="1"><code> read\_array(column\_name,input\_name=None) </code></td><td colspan="1" rowspan="1"><em> column\_name： </em> 列の名前。 <br /><br /><em> input\_name： </em> Magic ETL入力タイルの名前。使用可能な入力が1つしかない場合は必要ありません。 </td><td colspan="1" rowspan="1"> 入力から得られる単一の列。NumPy配列として表現。 </td></tr><tr><td colspan="1" rowspan="1"><code> read\_array\_dict(input\_name=None) </code></td><td colspan="1" rowspan="1"><em> input\_name： </em> Magic ETL入力タイルの名前。使用可能な入力が1つしかない場合は必要ありません。 </td><td colspan="1" rowspan="1"> 列名のOrderedDictとしてNumPy配列にマップされる入力。 <a id="r_api_reference" target="_blank" /></td></tr><tr><td colspan="1" rowspan="1"><code> write\_array\_dict(array\_dict) </code></td><td colspan="1" rowspan="1"><em> array\_dict： </em> Magic ETLコンテキストへの出力としてNumPy配列にマップされる列名のディクショナリ。配列は同じ長さでなければなりません。 </td><td colspan="1" rowspan="1"> 該当なし </td></tr></tbody></table>

[このページのトップへ](#intro)

# RスクリプトタイルパッケージのAPIリファレンス

<Frame>
  <img alt="R_Script.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/YnZ-qckvNLvJGrb6/images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNjD.png?fit=max&auto=format&n=YnZ-qckvNLvJGrb6&q=85&s=72a1afd2208879635d32cf04d65656b3" style={{width: 100, height: 113}} width="498" height="225" data-path="images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000005vNjD.png" />
</Frame>

<table border="1" cellpadding="1" cellspacing="1" data-aura-rendered-by="33:203;a"><thead><tr><th colspan="1" rowspan="1"><p> メソッドシグネチャー </p></th><th colspan="1" rowspan="1"><p> パラメーター </p></th><th colspan="1" rowspan="1"><p> 戻り値 </p></th></tr></thead><tbody><tr><td colspan="1" rowspan="1"><p><code> read.dataframe(input.name =NULL、以下を参照) </code></p></td><td colspan="1" rowspan="1"><p><code> input.name </code><em> ： </em> Magic ETL入力タイルの名前。使用可能な入力が1つしかない場合は必須ではありません。 </p></td><td colspan="1" rowspan="1"><p> 入力タイルのdata.frame。 </p></td></tr><tr><td colspan="1" rowspan="1"><p><code> write.dataframe(table) </code></p></td><td colspan="1" rowspan="1"><p><code> table </code><em> ： </em> data.frameまたはマトリックスをMagic ETLのタイルの出力としてエクスポートします。 </p></td><td colspan="1" rowspan="1"><p> 該当なし </p></td></tr></tbody></table>

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

<table class="mt-responsive-table" data-aura-rendered-by="33:203;a"><thead><tr><th colspan="1" rowspan="1"><p> パラメーター </p></th><th colspan="1" rowspan="1"><p> 説明 </p></th></tr></thead><tbody><tr><td colspan="1" rowspan="1"><p><code> colClasses </code></p></td><td colspan="1" rowspan="1"><p> 名前付きの列に割り当てられる、クラスの名前付きの文字ベクトル。 </p></td></tr><tr><td colspan="1" rowspan="1"><p><code> stringsAsFactors </code></p></td><td colspan="1" rowspan="1"><p> 文字列列を要素として読み込むかどうかを指定する論理値。デフォルトはfalseで、colClassesによって上書きされます。 </p></td></tr><tr><td colspan="1" rowspan="1"><p><code> integersAsNumerics </code></p></td><td colspan="1" rowspan="1"><p> 整数を数値（浮動小数点数）として読み込むかどうかを指定する論理値。デフォルトはtrueで、colClassesによって上書きされます。 </p></td></tr><tr><td colspan="1" rowspan="1"><p><code> allVerbatimExcept </code></p></td><td colspan="1" rowspan="1"><p> デフォルトの動作に従って読み込まれる列名の文字ベクトル。その他の列はすべて文字列として逐字的に読み込まれ、元のタイプで書き込まれます。Rコンテキストとの間で変換を行うと精度が失われるかエラーが発生し、実行される計算に列が必要ない場合に役立ちます。 <a id="directories_in_scripting_tiles" target="_blank" /></p></td></tr><tr><td colspan="1" rowspan="1"><p><code> allIgnoredExcept </code></p></td><td colspan="1" rowspan="1"><p> 読み込まれる列名の文字ベクトル。その他の列はすべて無視されます。 </p></td></tr></tbody></table>

[このページのトップへ](#intro)

## スクリプティングタイルのプロジェクトディレクトリと/tmpディレクトリ

Magic ETLのPythonとRのスクリプティング環境では、プロジェクトディレクトリと/tmpディレクトリという2つの特別なディレクトリを使用して、DataFlowのスクリプティングタイル間でデータを保存し、共有できます。これらのディレクトリを使用すると、複雑なデータ処理タスクを簡単に処理できます。

### プロジェクトディレクトリ

プロジェクトディレクトリは、DataFlow内のすべてのスクリプティングタイルの共有スペースであり、そのコンテンツは実行間で保持されます。つまり、統計モデルなどをプロジェクトディレクトリに保存して、複数の実行にわたって作業を続けることができます。プロジェクトディレクトリは /home/domo/project にあります。ただし、スクリプト内では単に「project」と呼びます。プロジェクトディレクトリに加えた変更は、正常に実行された後にのみ保存されます。プレビューまたは失敗した実行への変更は破棄されます。

プロジェクトディレクトリの合計サイズは、8ギガバイト（8GB）を超えてはなりません。この制限を増やす、バックアップからディレクトリを復元する、またはDataFlowから別のDataFlowにディレクトリをコピーする必要がある場合は、 [Domoサポート](https://domo-support.domo.com/s/) <InlineImage src="/images/kb/ja/ka0Vq0000001oUE-00N5w00000Ri7BU-0EMVq000001E3By.jpg" /> までお問い合わせください。

#### 使用事例

プロジェクトディレクトリの使用事例としては、次のようなものがあります。

* **使用事例1 —** 統計モデルを経時的にトレーニングします。これにより、複数のバージョンを保持しながら、どのバージョンが最適かを把握できます。
* **使用事例2 —** 最後に正常に実行された後の新しいバッチのみを読み込む入力DataSetオプションを使用すると、複雑な計算を更新したり、新しいデータで統計を集計したりできます。最初からすべてを再計算する必要はありません。

#### プロジェクトディレクトリを設定する

1. 必要なスクリプティングタイル（PythonやR）と、必要な入出力DataSetタイルを使用してDataFlowを作成します。
2. 最初のスクリプティングタイルでは、PythonかRかにかかわらず、データを段階的に処理するスクリプトを記述し、中間結果またはモデルをプロジェクトディレクトリに保存します。

   <Frame>
     <img alt="step 2 example proj dir.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/YnZ-qckvNLvJGrb6/images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000006ub6A.jpg?fit=max&auto=format&n=YnZ-qckvNLvJGrb6&q=85&s=42a7b1cac9ce36357374f3a519231992" style={{width: 780, height: 433}} width="936" height="520" data-path="images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000006ub6A.jpg" />
   </Frame>
3. PythonかRかに関係なく、別のスクリプティングタイルで、前のタイルからプロジェクトディレクトリに保存された中間結果またはモデルを読み込み、必要に応じて処理を続けます。

   <Frame>
     <img alt="read intermediate results.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/YnZ-qckvNLvJGrb6/images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000006ub6F.jpg?fit=max&auto=format&n=YnZ-qckvNLvJGrb6&q=85&s=2e75b9ab69198d65393ffbdf087f73d0" style={{width: 790, height: 437}} width="936" height="518" data-path="images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000006ub6F.jpg" />
   </Frame>
4. 必要に応じて、最終結果または更新されたモデルをプロジェクトディレクトリに保存し、［出力DataSet］タイルを使用して最終結果を保存します。

[このページのトップへ](#intro)

### /tmpディレクトリ

/tmpディレクトリは、DataFlow内のすべてのスクリプティングタイルの共有スペースです。あるスクリプティングタイルで/tmpディレクトリにファイルを作成すると、同じDataFlow内の別のスクリプティングタイルからこのファイルにアクセスできます。プロジェクトディレクトリとは異なり、/tmpディレクトリの内容は一時的なものであり、DataFlowの実行中に削除されます。

#### 使用事例

/tmpディレクトリの使用事例としては、次のようなものがあります。

* **使用事例1 —** 1つのスクリプトに複数の出力DataFrameを/tmp内のファイルとして作成し、ダウンストリームのスクリプティングタイルの別のテーブルで使用します。
* **使用事例2 —** DataFrameとして簡単に表現できないスクリプティングタイル間でオブジェクトを共有します。
* **使用事例3 —** スクリプティングタイル間のアクセス効率を改善します。

/tmpディレクトリを設定する

1. PythonかRかに関係なく、必要なスクリプティングタイルと、必要な入出力DataSetタイルを使用してDataFlowを作成します。
2. 最初のスクリプティングタイルで、必要に応じてデータを処理するスクリプトを記述し、結果のデータまたはオブジェクトを/tmpディレクトリに保存します。

   <Frame>
     <img alt="step two tmp directory.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/YnZ-qckvNLvJGrb6/images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000006ub6t.jpg?fit=max&auto=format&n=YnZ-qckvNLvJGrb6&q=85&s=ef4ef14702bab406b8dbd9551d8b5dd3" style={{width: 635, height: 349}} width="936" height="514" data-path="images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000006ub6t.jpg" />
   </Frame>
3. 2番目のスクリプティングタイルで、前のタイルから/tmpディレクトリに保存されているデータを読み取ります。

   <Frame>
     <img alt="tmp second tile.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/YnZ-qckvNLvJGrb6/images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000006ub6y.jpg?fit=max&auto=format&n=YnZ-qckvNLvJGrb6&q=85&s=9ecef7b2eb54b0c74a2e74eb1f61bd5c" width="936" height="520" data-path="images/kb/ka0Vq0000000yCH-00N5w00000Ri7BU-0EM5w000006ub6y.jpg" />
   </Frame>
4. 必要に応じてデータの処理を続行し、出力DataSetタイルを使用して最終結果を保存します。

[このページのトップへ](#intro)

### トラブルシューティング

* スクリプトを記述した後にタイルが設定済みとしてマークされない場合は、生成されるスキーマを提供したことを確認してください。詳細については、「
  [生成されるスキーマを設定する](#populate_the_schema "ETLのスクリプティング操作") 」を参照してください。

* スクリプトの動作に関するフィードバックを得るには、プレビューを実行します。キャンバス上部のツールバーで **［プレビュー］** を選択すると、プレビューを実行できます。プレビューを実行すると、タイルエディターパネルのツールバーに **［コンソール］** タブが表示されます。このタブには、スクリプトが生成する標準出力（ `stdout` ）と標準エラー（ `stderr` ）が表示されます。プレビューが失敗する場合は、コンソールにエラーが表示されていないか確認してください。

* スクリプトが失敗する場合は、この記事の「
  [スクリプティングタイルにデータを入出力する](#get_data_in_and_out "ETLのスクリプティング操作") 」セクションに記載されている3つのステップすべてを適切に実行したことを確認してください。Domoに書き込む変数の名前をチェックし、その名前が正しいことを確認してください。

* プレビューはサンプルのDataSetに対してのみ実行されます。スクリプトが正常に機能するためにデータにいくらかの可変性が必要な場合は、プレビューで使用したサンプルがこの可変性要件を満たさない場合があります。キャンバスのツールバーの **行の上限** を変更することで、プレビューサンプルのサイズを設定できます。

  <Note>
    **注記：** サンプルのサイズが大きいと、プレビューの実行時間が長くなります。
  </Note>

* スクリプトの実行に必要なパッケージ/ライブラリを明示的にインポートしたかを確認します。使用可能なパッケージのリストが **［パッケージ］** タブに表示されます。

* 列のすべての値がNULL値になる場合は、スクリプトによって列が実際には生成されていない可能性があります。ある列が **［スキーマ］** タブのリストに表示されている場合、その列は、スクリプトが実際にその列を生成するかどうかに関係なく、結果に追加されます。スクリプトが列を生成しない場合は、その列のすべての値がNULL値に設定されます。プレビューを実行してから **［スキーマ］** タブを調べることで、スクリプトによって作成される列と作成されない列を確認できます。各列のステータスは、列データタイプの右側に表示されます。

* スクリプトが実行時にメモリー不足エラーで失敗する場合は、入力DataSetが大きすぎるか、スクリプトがデータの急増を引き起こす何らかのJoin処理を実行している可能性があります。データがスクリプティングタイルに挿入される前にデータにフィルターをかけたり、スクリプトのリファクタリングを行ったりすることで、データの急増を防ぎます。メモリーエラーのトラブルシューティングの詳細については、「
  [スクリプティングタイルのメモリーエラーのトラブルシューティング](/s/article/4662511363351) 」を参照してください。

[このページのトップへ](#intro)

日本語
