分析Code Workbooks変換概要

注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

トランスフォーム

トランスフォームは、1つ以上の入力を受け取り、単一の出力を返すロジックです。入力と出力には Foundry データセットまたはモデルを使用できます。

Code Workbook は現在、3種類のトランスフォームをサポートしています。

  • コードトランスフォームでは、選択した言語で任意のロジックを記述できます。
  • テンプレートトランスフォームでは、ワークブック間やユーザー間で再利用できるシンプルなフォームベースのインターフェースによって、コードが抽象化されます。
  • 手動入力トランスフォームでは、ノードにデータを入力できます。

トランスフォームを追加する

Code Workbook で新しいトランスフォームを追加する方法はいくつかあります。

グラフの左上にある新しい変換ボタンを使用すると、追加するトランスフォームの種類を選択できます。たとえば、Python コードを選択すると新しい Python コードノードが追加され、Templates を選択するとテンプレートブラウザーが開きます。

transforms-new-transform-button

または、グラフ上の既存のトランスフォームにカーソルを合わせ、表示される青い + ボタンをクリックして、選択用のドロップダウンを開きます。新しく作成されたトランスフォームは、選択したトランスフォームの子になります。

transforms-plus-button

トランスフォームを編集する

名前を編集する

Code Workbook のトランスフォームは、データセットとして保存できます。詳しくは、データの保存を参照してください。

データセットとして保存されていないトランスフォームは、ワークブック固有のエイリアスで識別されます。このエイリアスを使用して、コード内でトランスフォームを参照できます。入力データセットと、データセットとして保存されたトランスフォームについては、Code Workbook はデータセットごとに2つの異なる名前を表示します。基になる Foundry データセットの名前と、ワークブック固有のエイリアスです。

transforms-names

エイリアスには、いくつかの利点があります。

  • ワークブックのロジックにとって直感的な名前でデータセットを参照できます。たとえば、更新頻度に応じて異なるフォルダーに「Titanic」という名前のデータセットが2つある場合、一方のエイリアスを titanic_historical、もう一方を titanic_daily_feed にできます。
  • Foundry のほかの場所で同じデータセットを使用しているユーザーに対してデータセット名を変更することなく、データセットのエイリアスを自由に編集できます。
  • ブランチ上でデータセットのエイリアスを変更し、その変更をブランチ間でマージできます。

データセット名またはエイリアスを編集するには、ロジックパネルで名前をクリックし、新しい名前を入力して、編集が終わったら Enter キーを押します。データセット名またはエイリアスを変更すると、もう一方の名前も自動的に更新するかどうかを確認するダイアログが表示されます。

入力を追加する

いずれかのトランスフォームをクリックすると、ロジックパネルが開きます。入力を追加するには、上部の入力バーにある + ボタンをクリックし、目的の入力をクリックします。

transforms-add-input

複数の入力を追加するには、+ の隣にあるボタンを使用します。

コード

コードトランスフォームは、現在のワークブックで使用している言語の基本構造があらかじめ入力されたコードエディターとして表示されます。各言語でのコードの記述に関する詳細は、言語のドキュメントを参照してください。

グローバルコード

グローバルコードペインでは、ワークブック内の各コードトランスフォームの前に実行するコードを定義できます。グローバルコードペインでは、ワークブック内のすべてのトランスフォームで利用可能な変数と関数を定義できます。

テンプレート

テンプレートトランスフォームでは、ロジックパネルにテンプレートパラメーターを編集するフォームが表示されます。

  • データセットパラメーターをクリックした後、グラフ上の任意のデータセットをクリックすると、そのパラメーターの値として設定されます。
  • 列パラメーターは、入力データセットが指定されている必要があります。指定後、列名のドロップダウンリストから選択できます。
  • 整数や文字列などの値パラメーターには、カスタム値を入力できます。

手動入力

グラフ上の手動入力ボタンをクリックして、手動入力ノードを追加します。

manual-entry-button

手動入力タブでデータを入力します。現在サポートされている列のデータ型は、Double、Integer、ブール値、文字列です。サポートされるのは500行のみです。

コピーして貼り付けることで、ほかの場所から簡単にデータを取り込めます。

manual-entry-node

トランスフォームを実行する

下部のパネルで実行を選択して、選択したトランスフォームを実行します。下流のすべてのトランスフォームを実行するには、矢印アイコンを選択し、すべての下流を実行を選択します。

トランスフォームを実行するには、ワークブックの編集権限に加え、ワークブックが使用するいずれかのデータセットで使用されているすべてのマーキングへのアクセス権が必要です。

コードをすばやく実行するためのショートカットキーもいくつか利用できます。? を入力すると、ショートカットキーの一覧が表示されます。

多数のトランスフォームを一度に実行する方法は2つあります。

  • Ctrl + クリックまたは Cmd + クリックを使用して、グラフ内の複数のデータセットを選択します。次に、グラフ上の任意の場所を右クリックし、メニューから N 個のデータセットを実行を選択します。
  • 上部バーの設定アイコン(歯車アイコン)をクリックし、すべてのトランスフォームを実行を選択します。

トランスフォームの実行中は、print による出力がログタブにストリーミングされます。これにより、トランスフォームの途中で出力を表示し、トランスフォームがまだ実行中でも結果を確認できます。これは、デバッグやロジックの実行時間の計測に役立ちます。

データセットとして保存した際に、コードで適用したデータの並べ替えが保持されない場合があります。つまり、データを並べ替えるトランスフォームを実行しても、データセットとして表示したときにはその順序で並んでいない場合があります。ただし、トランスフォーム内のほかの操作は適用されています。

タブ

グラフまたは全画面エディターで作業する際は、ノード下部のタブを使用して、トランスフォームの入力と出力を切り替えます。

入力

入力タブを使用して、トランスフォームへの入力を表示したり、入力を追加したり、入力タイプを変更したりできます。

データセットの読み取り時に行の順序は保持されません

ほかの Spark ベースのアプリケーションと同様に、Code Workbook はデフォルトではデータセットの読み取り時に行の順序を保持しません。分析に特定の行の順序が必要な場合は、コードでデータを並べ替えてください。

changing_input_type

ノードの言語ごとに、次の入力タイプが利用可能です。

ノードの言語利用可能な入力タイプ
PythonSpark データフレーム、Pandas データフレーム、Python トランスフォーム入力、オブジェクト
SQLSpark データフレーム
RSpark データフレーム、R トランスフォーム入力、R data.frame、オブジェクト

新しいトランスフォームを追加すると、その入力トランスフォームには、新しいトランスフォームの言語と各入力トランスフォームのタイプに基づくデフォルトの入力タイプが設定されます。詳細は次のとおりです。

入力トランスフォームのタイプ下流のトランスフォームの言語デフォルトの入力タイプ追加の詳細
スキーマなしのインポートPythonPython トランスフォーム入力
RR トランスフォーム入力
SQLSpark データフレームスキーマのない入力トランスフォームを持つ SQL ノードを作成することはできますが、SQL ノードは Spark データフレーム入力のみをサポートするため、スキーマのない入力の分析には適していません。
スキーマありのインポートPythonSpark データフレーム
RR data.frame
SQLSpark データフレーム
モデルを含むカスタムファイル形式でのインポートPythonオブジェクト詳細については、モデルのトレーニングチュートリアルを参照してください。Code Workbook のオブジェクト入力タイプはカスタムファイル形式であり、オントロジーのオブジェクトとは関係ありません。
Rオブジェクト詳細については、モデルのトレーニングチュートリアルを参照してください。Code Workbook のオブジェクト入力タイプはカスタムファイル形式であり、オントロジーのオブジェクトとは関係ありません。
SQLSpark データフレームカスタムファイル形式の入力トランスフォームを持つ SQL ノードを作成することはできますが、SQL ノードは Spark データフレーム入力のみをサポートするため、カスタムファイル形式の入力の分析には適していません。
派生ノード該当なし入力ノードの出力タイプ入力ノードの出力タイプが派生ノードの言語と互換性がない場合、派生ノードには、インポートノードのタイプについて上記で定義されたデフォルトが使用されます。たとえば、ノード A が Pandas データフレームを返し、派生ノード B が R ノードの場合、ノード B はデフォルトでノード A を R data.frame として読み取ります。

プレビュー

Code Workbook でトランスフォームを実行すると、結果の形式を確認するために50行のプレビューが計算されます。このプレビューは、データセットの Foundry への書き込みが完了する前にプレビュータブに表示されます。データセットが Foundry に永続化されると、プレビュータブは結果全体に更新されます。

可視化

トランスフォームで使用する言語に応じて、プロットライブラリを使用し、Code Workbook のユーザーインターフェースに伝播される可視化を返すことができます。各言語での実行方法の詳細については、言語のドキュメントを参照してください。

生成された可視化はデフォルトでグラフに表示され、下部の可視化タブでも利用可能です。

transforms-visualization

コンテキストメニューを使用して、グラフ内の表示をテーブルモードとグラフモードの間で切り替えることができます。

toggle_transformation

可視化タブでは、グラフを画像としてダウンロードしたり、レポートに追加したりできます。これらの操作はコンテキストメニューからも利用可能です。

visualization_tab

ログ

トランスフォームの実行による print 文(標準出力)、警告およびエラー(標準エラー出力)を表示します。標準エラー出力がある場合は、ログタブが自動的に選択され、警告またはエラーの出力があることを知らせる小さなコールアウトが表示されます。

logs_tab

説明

データセットの説明を更新します。説明を更新すると、すべてのブランチで説明が更新されます。説明はデータセットを開くビューでも利用可能です。

Markdown を使用して説明のスタイルを設定し、右クリック(アクション)メニューで説明文表示を有効にすると、説明をグラフ内に表示できます。ワークブック内のすべてのノードの説明を表示するには、ヘッダーのツールの歯車アイコンをクリックし、すべての説明を表示を選択します。

モデル

モデルを返すトランスフォームは、自動的にモデルとして Foundry に書き込まれるため、Foundry ML インターフェースを使用できます。各言語でのモデルの使用方法の詳細については、言語のドキュメントを参照してください。

非決定論的なトランスフォーム

一部の変換は非決定論的です。つまり、入力データと変換ロジックが同じでも、異なる結果を返します。非決定論的なトランスフォームにつながる可能性がある関数には、現在のタイムスタンプ、行番号、単調増加する ID を取得する関数や、重複する値を含む列で並べ替えた後の変換などがあります。

Code Workbook でトランスフォームを実行すると、2個のジョブが開始されます。1個のジョブは50行のプレビューを計算し、もう1個のジョブはデータセット全体に対する変換を計算して結果を Foundry に書き込みます。非決定論的なトランスフォームがある場合、50行のプレビューに表示される結果は、Foundry データセット内の結果と一致しない可能性があります。

変換内で非決定論的なコードを実行する場合、データフレームは必ずしも実体化されるわけではありません。たとえば、トランスフォーム B と C の親である非決定論的なトランスフォーム A があるとします。Code Workbook 内から各変換を個別に実行すると、各データセットが順番に Foundry に書き込まれ、トランスフォーム B と C の間で一貫した結果になります。ただし、A で「下流をすべて実行」を選択した場合、B と C の実行時に A が必ずしも実体化されるわけではないため、結果が競合する可能性があります。Data Lineage 内からビルドを実行する場合も、各データセットが実体化されて順番に計算されるため、これを防ぐことができます。Pandas データフレームに変換することでも同様に防げます。

非決定論的な変換につながる関数の例には、current_date()、current_timestamp()、row_count() がありますが、ほかの関数も非決定性につながる可能性があります。予期しない動作につながる可能性がある Spark の変換の計算方法については、Apache Spark のドキュメント ↗を参照してください。