出力スキーマの定義
出力が一貫した方法で表示されるようにするには、データ フレームの出力スキーマを定義します。
スキーマはランタイムと GUI ノード クラスの両方で設定する必要があり、両方でスキーマが一致する必要があります。GUI ノードは、出力ビジュアライゼーションを適切にフォーマットし、オペレーター データセット スキーマに関する情報を後続のオペレーターに渡すために、出力スキーマにアクセスする必要があります。
始める前にオペレーター ダイアログを作成します。
- 手順
- 次のコードを追加します。
override def defineOutputSchemaColumns(inputSchema: TabularSchema、 parameters: OperatorParameters): Seq[ColumnDef] = { val columnsToKeep = parameters.getTabularDatasetSelectedColumns(OperatorConstants.parameterID)._2 inputSchema.getDefinedColumns.filter(colDef => columnsToKeep.contains(colDef.columnName)) }最初の行は、
operatorDialogで定義されたTabularDatasetColumnCheckboxパラメータから選択された列名を取得します。 2 行目は、選択した列名で使用可能な列をフィルターし、それらの列を出力スキーマとして返します。コードは次のようになります。
class MyColumnFilterGUINode extends SparkDataFrameGUINode[MyColumnFilterJob]{ override def onPlacement(operatorDialog: OperatorDialog, operatorDataSourceManager: OperatorDataSourceManager, operatorSchemaManager: OperatorSchemaManager): Unit = { operatorDialog.addTabularDatasetColumnCheckboxes( OperatorConstants.parameterID, // the ID of the operator "Columns to keep", // the label of the operator (user-visible) ColumnFilter.All, // this means users can select all of the columns // but this can also be changed to allow for only // numeric or categorical columns "main" // this is the selectionGroupId, // which is used for validating groups of parameters super.onPlacement(operatorDialog, operatorDataSourceManager, operatorSchemaManager) } override def defineOutputSchemaColumns(inputSchema: TabularSchema, parameters: OperatorParameters): Seq[ColumnDef] = { val columnsToKeep = parameters.getTabularDatasetSelectedColumns(OperatorConstants.parameterID)._2 inputSchema.getDefinedColumns.filter(colDef => columnsToKeep.contains(colDef.columnName)) } }
次に行うアクションランタイム クラスを作成します。