分析Code Workbook変換概要

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

概要

トランスフォームは、1つまたは複数の入力を受け取り、単一の出力を返すロジックの断片です。入力と出力は、Foundry のデータセットやモデルにすることができます。

Code Workbook では、現在、以下の3種類のトランスフォームがサポートされています。

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

トランスフォームの追加

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

グラフの左上にある New Transform ボタンを使って、追加するトランスフォームのタイプを選択できます。例えば、Python code を選択して新しい Python コードノードを追加したり、Templates を選択してテンプレートブラウザを開くことができます。

transforms-new-transform-button

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

transforms-plus-button

トランスフォームの編集

名前の編集

Code Workbook のトランスフォームは、データセットとして保存することができます。データの永続性について詳しくはこちらを参照してください。

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

transforms-names

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

  • ワークブック内のロジックに直感的な方法でデータセットを参照できます。例えば、異なる更新頻度のフォルダーにある「Titanic」という名前の2つのデータセットがある場合、1つを titanic_historical 、もう1つを titanic_daily_feed としてエイリアスを設定できます。
  • データセットのエイリアスを自由に編集しても、Foundry内の同じデータセットを使用している他のユーザーのデータセット名に影響を与えません。
  • ブランチ上でデータセットのエイリアスを変更し、この変更をブランチ間でマージすることができます。

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

入力の追加

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

transforms-add-input

複数の入力を追加するには、+ の横にあるボタンを使用してください。

コード

コードトランスフォームは、現在のワークブックで使用している言語に基づいた基本構造が事前に設定されたコードエディタとして表示されます。各言語でコードを記述する方法の詳細については、言語ドキュメント を参照してください。

グローバルコード

グローバルコード パネルでは、ワークブック内の各コードトランスフォームの前に実行されるコードを定義できます。グローバルコードパネルは、ワークブック内のトランスフォームで使用できる変数や関数を定義するために使用できます。

テンプレート

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

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

手動入力

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

manual-entry-button

Manual Entry タブでデータを入力します。現在サポートされている列のタイプは、Double、Integer、Boolean、および String です。500 行までがサポートされています。

他の場所からのデータを簡単に持ち込むために、コピー&ペーストを使います。

manual-entry-node

トランスフォームの実行

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

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

また、コードを素早く実行するためのいくつかのホットキーも利用できます。? を入力して、ホットキーのリストを表示します。

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

  • Ctrl + クリックまたは Cmd + クリックを使用して、グラフ内で複数のデータセットを選択します。次に、グラフ上の任意の場所で右クリックして、メニューから Run N datasets を選択します。
  • 上部のバーにある設定アイコン(Gear icon)をクリックし、Run all transforms を選択します。

トランスフォームが実行されている間、出力された内容は Logs タブにストリーミングされます。これにより、トランスフォームの途中で出力を表示し、トランスフォームがまだ実行中の間に結果を確認できます。これは、デバッグやロジックのタイミング調整に役立ちます。

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

タブ

グラフまたはフルスクリーンエディタで作業する際には、ノードの下部にあるタブを使用して、トランスフォームの入力と出力をナビゲートします。

入力

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

警告

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

changing_input_type

各ノード言語で利用可能な入力タイプは以下の通りです。

ノード言語利用可能な入力タイプ
PythonSpark dataframe, Pandas dataframe, Python transform input, Object
SQLSpark dataframe
RSpark dataframe, R transform input, R data.frame, Object

新しいトランスフォームが追加されると、その入力トランスフォームは、新しいトランスフォームの言語と各入力トランスフォームタイプに基づいて、デフォルトの入力タイプになります。詳細は以下の表を参照してください。

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

プレビュー

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

可視化

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

結果として得られる可視化は、デフォルトでグラフに表示されますが、Visualizations 下部のタブでも利用できます。

transforms-visualization

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

toggle_transformation

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

visualization_tab

ログ

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

logs_tab

説明

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

マークダウンを使って説明をスタイリングし、グラフで右クリック(アクション)メニューの Show Description をクリックして表示できます。ワークブック内のすべてのノードの説明を表示するには、ヘッダーのツールアイコンをクリックし、Show all descriptions を選択します。

モデル

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

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

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

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

非決定論的なコードをトランスフォーム内で実行する場合、データフレームは必ずしも具体化されません。例えば、非決定論的なトランスフォームであるトランスフォーム A があり、それがトランスフォーム B と C の親であると仮定します。Code Workbook 内でそれぞれの変換を個別に実行すると、各データセットが Foundry に順次書き込まれ、トランスフォーム B と C の結果が一貫しています。ただし、A で「すべての下流を実行」を選択すると、A が B と C を実行する際に必ずしも具体化されないため、結果が矛盾する場合があります。データラインエージからの実行もこれを防ぐことができますし、Pandas データフレームに変換することもできます。

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