出力スキーマの定義

出力が一貫した方法で表示されるようにするには、データ フレームの出力スキーマを定義します。

スキーマはランタイムと GUI ノード クラスの両方で設定する必要があり、両方でスキーマが一致する必要があります。GUI ノードは、出力ビジュアライゼーションを適切にフォーマットし、オペレーター データセット スキーマに関する情報を後続のオペレーターに渡すために、出力スキーマにアクセスする必要があります。

    手順
  1. 次のコードを追加します。
    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))
     }
    }
次に行うアクションランタイム クラスを作成します