Python スクリプトで GlobalParameters を使用することはできませんが (以前の回答を参照)、Python スクリプトの 2 番目の入力をハッキング/悪用して、他のパラメーターを渡すことができます。私の例では、それらをメタデータ パラメーターと呼んでいます。
まず、次を追加しました。
- 「realdata」という名前のWeb サービス入力モジュール (コース外の実際のデータ用)
- 「metadata」という名前のWeb サービス入力モジュール (これを悪用して、Python にパラメーターを渡します)。
- 「computedMetadata」という名前のWeb サービス出力モジュール
モジュールを次のように接続します。

ご覧のとおり、実際のデータ セット (レストランの評価) とダミーのメタデータ csv (データを手動で入力) モジュールも追加しました。
この手動データでは、ヘッダーとデータを保持するための 1 つの行のみを持つ csv であるかのように、メタデータ パラメーターを事前定義する必要があります。

この例では、sampleRate と bitsPerSample の両方が 0 に設定されています。
次に、私の Python スクリプトは、その偽の csv をメタデータとして取り込み、ダミーの計算を行い、それを列名として返します。
import pandas as pd
def azureml_main(realdata = None, metadata = None):
theSum = metadata["sampleRate"][0] + metadata["bitsPerSample"][0]
outputString = "The sum of the sampleRate and the bitsPerSecond is " + str(theSum)
print(outputString)
return pd.DataFrame([outputString])
次に、これを Web サービスとして公開し、次のように Node.js を使用して呼び出しました。
httpreq.post('https://ussouthcentral.services.azureml.net/workspaces/xxx/services/xxx', {
headers: {
Authorization: 'Bearer xxx'
},
json: {
"Inputs": {
"realdata": {
"ColumnNames": [
"userID",
"placeID",
"rating"
],
"Values": [
[
"100",
"101",
"102"
],
[
"200",
"201",
"202"
]
]
},
"metadata": {
"ColumnNames": [
"sampleRate",
"bitsPerSample"
],
"Values": [
[
44100,
16
]
]
}
},
"GlobalParameters": {}
}
}, (err, res) => {
if(err) return console.log(err);
console.log(JSON.parse(res.body));
});
出力は期待どおりでした:
{ Results:
{ computedMetadata:
{ type: 'table',
value:
{ ColumnNames: [ '0' ],
ColumnTypes: [ 'String' ],
Values:
[ [ 'The sum of the sampleRate and the bitsPerSecond is 44116' ] ] } } } }
幸運を!