注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
トランスフォームは、1つまたは複数の入力を受け取り、単一の出力を返すロジックの断片です。入力と出力は、Foundry のデータセットやモデルにすることができます。
Code Workbook では、現在、以下の3種類のトランスフォームがサポートされています。
Code Workbook で新しいトランスフォームを追加する方法はいくつかあります。
グラフの左上にある New Transform ボタンを使って、追加するトランスフォームのタイプを選択できます。例えば、Python code を選択して新しい Python コードノードを追加したり、Templates を選択してテンプレートブラウザを開くことができます。
また、グラフ上の既存のトランスフォームにカーソルを合わせ、表示される青い + ボタンをクリックして、選択ドロップダウンを開くこともできます。新しく作成されたトランスフォームは、選択したトランスフォームの子になります。
Code Workbook のトランスフォームは、データセットとして保存することができます。データの永続性について詳しくはこちらを参照してください。
データセットとして保存されていないトランスフォームは、ワークブック固有のエイリアスによって識別されます。これにより、コードでトランスフォームを参照できます。入力データセットやデータセットとして保存されたトランスフォームの場合、Code Workbook では、各データセットの基礎となる Foundry データセットの名前と、ワークブック固有のエイリアスの2つの異なる名前が表示されます。
エイリアスにはいくつかの利点があります。
titanic_historical
、もう1つを titanic_daily_feed
としてエイリアスを設定できます。データセット名またはエイリアスを編集するには、ロジックパネルの名前をクリックし、新しい名前を入力し、編集が終わったら Enter キーを押してください。データセット名やエイリアスを変更すると、もう片方の名前を自動的に更新するかどうかを求められます。
トランスフォームをクリックすると、ロジックパネルが開きます。入力を追加するには、上部の入力バーの + ボタンをクリックし、目的の入力をクリックします。
複数の入力を追加するには、+ の横にあるボタンを使用してください。
コードトランスフォームは、現在のワークブックで使用している言語に基づいた基本構造が事前に設定されたコードエディタとして表示されます。各言語でコードを記述する方法の詳細については、言語ドキュメント を参照してください。
グローバルコード パネルでは、ワークブック内の各コードトランスフォームの前に実行されるコードを定義できます。グローバルコードパネルは、ワークブック内のトランスフォームで使用できる変数や関数を定義するために使用できます。
テンプレートトランスフォーム の場合、ロジックパネルには、テンプレートパラメーターを編集するフォームが表示されます。
グラフ上の Manual Entry ボタンをクリックして、手動入力ノードを追加します。
Manual Entry タブでデータを入力します。現在サポートされている列のタイプは、Double、Integer、Boolean、および String です。500 行までがサポートされています。
他の場所からのデータを簡単に持ち込むために、コピー&ペーストを使います。
選択したトランスフォームを実行するには、下部パネルで Run を選択します。すべての下流のトランスフォームを実行するには、矢印アイコンを選択し、Run all downstream を選択します。
トランスフォームを実行するには、ワークブックの編集権限が必要であり、ワークブックで使用されているすべてのデータセットに対するマーキングへのアクセスが必要です。
また、コードを素早く実行するためのいくつかのホットキーも利用できます。?
を入力して、ホットキーのリストを表示します。
一度に多くのトランスフォームを実行する方法は2つあります。
トランスフォームが実行されている間、出力された内容は Logs タブにストリーミングされます。これにより、トランスフォームの途中で出力を表示し、トランスフォームがまだ実行中の間に結果を確認できます。これは、デバッグやロジックのタイミング調整に役立ちます。
コードで適用されたデータの並べ替えが、データセットに保存された後も保持されない場合があります。言い換えると、データを並べ替えるトランスフォームを実行しても、データセットとして表示されるデータはその順序で並んでいないかもしれませんが、トランスフォームの他の操作は適用されています。
グラフまたはフルスクリーンエディタで作業する際には、ノードの下部にあるタブを使用して、トランスフォームの入力と出力をナビゲートします。
入力タブを使用して、トランスフォームへの入力を表示し、追加の入力を追加したり、入力タイプを変更したりできます。
Sparkベースのアプリケーションと同様に、Code Workbook はデフォルトでデータセットを読み取る際に行の順序を保持しません。解析に特定の行の順序が必要な場合は、コード内でデータを並べ替えてください。
各ノード言語で利用可能な入力タイプは以下の通りです。
ノード言語 | 利用可能な入力タイプ |
---|---|
Python | Spark dataframe, Pandas dataframe, Python transform input, Object |
SQL | Spark dataframe |
R | Spark dataframe, R transform input, R data.frame, Object |
新しいトランスフォームが追加されると、その入力トランスフォームは、新しいトランスフォームの言語と各入力トランスフォームタイプに基づいて、デフォルトの入力タイプになります。詳細は以下の表を参照してください。
入力トランスフォームタイプ | 下流のトランスフォーム言語 | デフォルトの入力タイプ | 追加の詳細 |
---|---|---|---|
スキーマなしのインポート | Python | Python transform input | |
R | R transform input | ||
SQL | Spark dataframe | スキーマがない入力トランスフォームを持つ SQL ノードを作成することはできますが、SQL ノードは Spark dataframe 入力のみをサポートしており、スキーマがない入力を分析するのに効果的ではありません。 | |
スキーマありのインポート | Python | Spark dataframe | |
R | R data.frame | ||
SQL | Spark dataframe | ||
カスタムファイル形式を含むインポート、モデルを含む | Python | Object | 詳しくはモデルトレーニングチュートリアルを参照してください。Code Workbook のオブジェクト入力タイプは、カスタムファイル形式であり、オントロジーオブジェクトとは関係ありません。 |
R | Object | 詳しくはモデルトレーニングチュートリアルを参照してください。Code Workbook のオブジェクト入力タイプは、カスタムファイル形式であり、オントロジーオブジェクトとは関係ありません。 | |
SQL | Spark dataframe | カスタムファイル形式の入力トランスフォームを持つ SQL ノードを作成することはできますが、SQL ノードは Spark dataframe 入力のみをサポートしており、カスタムファイル形式の入力を分析するのに効果的ではありません。 | |
派生ノード | N/A | 入力ノードの出力タイプ | 入力ノードの出力タイプが派生ノードの言語と互換性がない場合、派生ノードはインポートノードタイプで定義されたデフォルトを使用します。例えば、ノード A が Pandas データフレームを返し、派生ノード B が R ノードである場合、ノード B はノード A を R data.frame として読み込むデフォルトになります。 |
Code Workbook でトランスフォームを実行すると、結果の形状を確認するために50行のプレビューが計算されます。このプレビューは、データセットが Foundry に書き込まれる前に、プレビュータブに表示されます。データセットが Foundry に永続化された後、プレビュータブは完全な結果に更新されます。
トランスフォームで使用される言語に応じて、プロットライブラリを使用して可視化を返すことができます。これにより、Code Workbook のユーザーインターフェースに伝播します。各言語での方法については、言語ドキュメントを参照してください。
結果として得られる可視化は、デフォルトでグラフに表示されますが、Visualizations 下部のタブでも利用できます。
コンテキストメニューを使って、グラフでの表示をテーブルモードとグラフモードの間で切り替えることができます。
可視化タブでは、グラフを画像としてダウンロードしたり、レポートに追加したりすることができます。これらの操作は、コンテキストメニューでも利用できます。
トランスフォームを実行した際の出力(標準出力)、警告やエラー(標準エラー)を表示します。標準エラーがある場合、ログタブが自動的に選択され、警告/エラー出力があることを通知する小さなコールアウトが表示されます。
データセットの説明を更新します。説明を更新すると、すべてのブランチで更新されます。説明は 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 のドキュメントを参照してください。