SPSS Modeler は、 Apache Spark フレームワークを使用して Python スクリプトを実行し、データを処理できます。 ここでは、付属するインターフェース用の Python API について説明します。
SPSS Modeler インストールには、Spark ディストリビューションが含まれています。
データへのアクセス
inputData = asContext.getSparkInputData()
asContext.setSparkOutputData(outputData)
outputData = sqlContext.createDataFrame(rdd)
データ モデルの定義
データを生成するノードでは、そのノードの下流で表示されるフィールドを記述するデータ モデルも定義する必要があります。 Spark SQL の用語では、データ モデルはスキーマと呼ばれます。
Python/Spark スクリプトでは、pyspsark.sql.types.StructType
オブジェクトの形式で出力データ モデルが定義されます。 StructType
は、StructField
オブジェクトのリストから構成され、出力データ フレーム内の行を記述します。 それぞれの StructField
により、出力データ モデル内の 1 つのフィールドが記述されます。
:schema
属性を使用して、入力データのデータ モデルを取得することができます。inputSchema = inputData.schema
StructField
コンストラクタを使用して、出力データ モデル内の新しいフィールドや変更フィールドを作成することができます。field = StructField(name, dataType, nullable=True, metadata=None)
このコンストラクタについては、Spark の資料を参照してください。
少なくとも、フィールド名とそのフィールドのデータ型を指定する必要があります。 オプションで、フィールドの数値データ、役割、および説明を提供するメタデータを指定できます ( データ・メタデータを参照)。
DataModelOnly モード
SPSS Modeler は、下流での編集を可能にするために、ノードの実行前にノードの出力データ・モデルを認識する必要があります。 Python/Spark ノードの出力データ・モデルを取得するために、 SPSS Modeler は、使用可能なデータがない特殊な データ・モデルのみ モードでスクリプトを実行します。 Analytic Server コンテキスト オブジェクトで isComputeDataModelOnly
メソッドを使用すると、スクリプトでこの特殊なモードを識別することができます。
if asContext.isComputeDataModelOnly():
inputSchema = asContext.getSparkInputSchema()
outputSchema = ... # construct the output data model
asContext.setSparkOutputSchema(outputSchema)
else:
inputData = asContext.getSparkInputData()
outputData = ... # construct the output data frame
asContext.setSparkOutputData(outputData)
モデルの作成
モデルを作成するノードは、モデルを適用するノードが後でそのモデルを正確に再作成できるように、モデルを適切に記述するコンテンツを実行コンテキストに返す必要があります。
モデル・コンテンツは、キーと値のペアによって定義されます。この場合、キーと値の意味はビルド・ノードとスコア・ノードにのみ認識され、 SPSS Modeler によって解釈されることはありません。 オプションで、 SPSS Modeler がモデル・ナゲットでユーザーに既知のタイプを持つ値を表示することを意図して、MIME タイプを値に割り当てることができます。
asContext.setModelContentFromString(key, value, mimeType=None)
value = asContext.getModelContentToString(key)
asContext.setModelContentFromPath(key, path)
この場合、MIME タイプを指定するオプションはないことに注意してください。これは、バンドルにさまざまなコンテンツ タイプが含まれている可能性があるためです。
path = asContext.createTemporaryFolder()
path = asContext.getModelContentToPath(key)
エラー処理
spss.pyspark.exceptions
モジュールで事前に定義されています。 次に例を示します。from spss.pyspark.exceptions import ASContextException
if ... some error condition ...:
raise ASContextException("message to display to user")