Azure Blob Storage からのインポート
重要
Machine Learning Studio (クラシック) のサポートは、2024 年 8 月 31 日に終了します。 その日までに、Azure Machine Learning に切り替えすることをお勧めします。
2021 年 12 月 1 日以降、新しい Machine Learning Studio (クラシック) リソースは作成できません。 2024 年 8 月 31 日まで、既存の Machine Learning Studio (クラシック) リソースを引き続き使用できます。
- ML Studio (クラシック) から Azure Machine Learning への機械学習プロジェクトの移動に関する情報を参照してください。
- Azure Machine Learning についての詳細を参照してください。
ML Studio (クラシック) のドキュメントは廃止予定であり、今後更新されない可能性があります。
このトピックでは、Machine Learning Studio (クラシック) のデータのインポート モジュールを使用して Azure Blob Storage からデータを読み取り、機械学習実験でデータを使用する方法について説明します。
注意
適用対象: Machine Learning Studio (クラシック) のみ
類似のドラッグ アンド ドロップ モジュールは Azure Machine Learning デザイナーで使用できます。
Azure Blob service は、大量のデータ (バイナリ データを含む) を格納することを目的としています。 Azure BLOB には、HTTP または HTTPS を使用して、どこからでもアクセスすることができます。 Blob Storage の種類によっては、認証が要求される場合があります。
- パブリック BLOB は、だれでも (つまり、SAS URL を持つユーザーが) アクセスできます。
- プライベート BLOB では、ログインと資格情報が要求されます。
Blob Storage からのインポートでは、ブロック BLOB 形式が使用された BLOB にデータが格納されている必要があります。 BLOB に格納されているファイルでは、コンマ区切り (CSV) またはタブ区切り (TSV) 形式を使用する必要があります。 ファイルを読み取る際、レコードおよび適切な属性の見出しが、データセットとして行単位でメモリに読み込まれます。
注意
[安全な転送が必要] オプションが有効Azure Blob Storage場合、データのインポート モジュールはアカウントへの接続をサポートしません。
Machine Learning で使用できる BLOB ストレージの種類に関するその他の制限については、「テクニカル ノート」セクションを参照してください。
ヒント
サポートされていない形式でデータをインポートする必要がありますか? Python または R を使用できます。次の例を参照Azure AI Gallery: テキスト以外のファイルをファイルから読み込Azure Blob Storage
Azure BLOB からデータをインポートする方法
スキーマが正しいことを確認するために、データはインポート前にプロファイルしておくことを強くお勧めします。 スキーマは、インポート プロセスでいくつかの見出し行をスキャンすることによって特定されますが、後続の行に余分な列やエラーの原因となるデータが含まれている可能性もあります。
データ インポート ウィザードを使用する
このモジュールには、ストレージ オプションを選択し、既存のサブスクリプションとアカウントから選択し、すべてのオプションをすばやく構成するのに役立つ新しいウィザードが備備されています。
データのインポート モジュールを実験に追加します。 モジュールは、Studio (クラシック) の [データの入力と出力] カテゴリで確認 できます。
[データ のインポート ウィザードの起動] をクリック し、画面の指示に従います。
構成が完了したら、実際に実験にデータをコピーするには、モジュールを右クリックし、選択したファイルの実行 を選択します。
既存のデータ接続を編集する必要がある場合は、ウィザードによって以前のすべての構成の詳細が読み込まれるので、最初から再度開始する必要はありません。
データのインポート モジュールのプロパティを手動で設定する
次の手順では、インポート元を手動で構成する方法について説明します。
データのインポート モジュールを実験に追加します。 このモジュールは、Studio (クラシック) の [データの入力と出力] カテゴリ で確認 できます。
[データ ソース] に [Azure Blob Storage] を選択します。
情報がパブリック データ ソースとして提供されていることがわかっている場合は、[認証の種類] で [パブリック (SAS URL)] を選択します。 SAS URL は、パブリック アクセス用の期限付きの URL で、Azure ストレージ ユーティリティを使用して生成できます。
それ以外の場合は、[アカウント] を選択します。
SAS URL を使用してアクセスできるパブリック BLOB にデータが存在する場合、ダウンロードと認証に必要な情報はすべて URL 文字列に含まれているため、それ以外の資格情報は必要ありません。
[URI] フィールドに、アカウントとパブリック BLOB を定義する完全 URI を入力するか貼り付けます。
注意
SAS URL を使用してアクセスできるページでは、CSV、TSV、ARFF の形式のみを使用してデータを格納できます。
データがプライベート アカウントに存在する場合は、アカウント名とキーを含んだ資格情報を指定する必要があります。
[アカウント名] に、アクセスしたい BLOB が含まれているアカウントの名前を入力するか貼り付けます。
たとえば、ストレージ アカウントの完全 URL が
https://myshared.blob.core.windows.net
であれば、「myshared
」と入力します。[アカウント キー] には、アカウントに関連付けられているストレージ アクセス キーを貼り付けます。
アクセス キーが分からない場合は、次の記事の「Azure ストレージ アカウントの管理」セクションを参照してください。 Azure Storage アカウントについて。
[コンテナー、ディレクトリ、BLOB のパス] に、取得したい特定の BLOB の名前を入力します。
たとえば、mymldata という名前のアカウントのコンテナー trainingdata に data01.csv という名前のファイルをアップロードした場合、ファイルの完全 URL は
https://mymldata.blob.core.windows.net/trainingdata/data01.txt
になります。そのため、[Path to container, directory, or blob]/(コンテナー、ディレクトリ、または BLOB へのパス)フィールドに次のコマンドを入力します。
trainingdata/data01.csv
複数のファイルをインポートする場合、ワイルドカード文字
*
(アスタリスク) または?
(疑問符) を使用できます。たとえば、互換性がある形式の複数のファイルが
trainingdata
コンテナーに含まれている場合、次のように指定することで、data
で始まるすべてのファイルを読み取って、単一のデータセットに連結することができます。trainingdata/data*.csv
コンテナー名にワイルドカードを使用することはできません。 複数のコンテナーからファイルをインポートする必要がある場合、コンテナーごとにデータのインポート モジュールの個別のインスタンスを使用し、行の追加モジュールを使ってデータセットをマージしてください。
注意
[Use cached results]\(キャッシュされた結果を使用する\) オプションを選択した場合、コンテナー内のファイルに変更を加えても、実験のデータは更新されません。
[BLOB ファイル形式] で、BLOB に格納されているデータの形式を示すオプションを選択して、Machine Learningデータを適切に処理します。 次の形式がサポートされています。
CSV: コンマ区切り値 (CSV) は、ファイルをエクスポートおよびインポートする既定のストレージMachine Learning。 あらかじめデータにヘッダー行が含まれている場合は、必ず [ファイルにヘッダー行が含まれています] オプションを選択してください。そうしないと、ヘッダーがデータ行として扱われます。
で使用される CSV 形式の詳細については、「Machine Learning CSV に変換](変換から変換 csv.md
TSV: タブ区切り値 (TSV) は、多くの機械学習ツールで使用される形式です。 あらかじめデータにヘッダー行が含まれている場合は、必ず [ファイルにヘッダー行が含まれています] オプションを選択してください。そうしないと、ヘッダーがデータ行として扱われます。
で使用される TSV 形式の詳細については、「Machine Learning TSV への変換」を参照してください。
ARFF: この形式では、Weka ツールセットで使用される形式のファイルのインポートがサポートされています。 詳細については、「 ARFF への変換」を参照してください。
エンコードが指定された CSV: 別のフィールド区切り記号を使用して準備された可能性がある CSV ファイル、またはソースで UTF-8 とは異なる文字エンコードが使用されている可能性がある場合は、このオプションを使用します。 この形式は、SAS URL に格納されているファイルではサポートされていません。
Excel: このオプションを使用すると、Excelに格納されているブックからデータを読み取Azure Blob Storage。 SAS URL Excelファイルでは、この形式はサポートされていません。
特殊なエンコードを使用する CSV ファイルの場合は、文字の適切なインポートを制御するために、次の追加オプションを設定します。
コンマ区切り記号形式: フィールド
,
区切り記号として使用される一般的な文字の一覧 (コンマ タブ文字、セミコロンなど) から選択します;
。エンコード形式: 読み取るファイルで使用される文字エンコーディングを選択します。 サポートされている エンコードの一覧 については、「テクニカル ノート」セクションを参照してください。
[ファイルにヘッダー行がある]: データにヘッダー行が既に含まれている場合は、このオプションを選択します。 それ以外の場合、ヘッダーはデータ行としてインポートされます。
ファイルExcel、Excel ファイルが格納されているアカウントとコンテナーを指定した後、次のオプションを使用して Excel の形式と範囲またはテーブル名を指定する必要があります。
Excel形式: データがワークシートの範囲内にあるか、Excel内にあるのかをExcelします。
Excelまたは埋め込みテーブル: [Excel シート] オプションを選択した場合は、ワークシートの名前 (タブ名) またはブックに埋め込まれたテーブルを指定します。 シートのすべてのデータが読み取りされます。セルの範囲を指定することはできません。 [テーブル名Excel選択した場合、シートにテーブルが 1 つしかなくても、シート名ではなくテーブル名を取得する必要があります。 テーブル名を表示するには、テーブル内をクリックし、[テーブル ツール] タブで [テーブル名] プロパティを表示します。
実験を実行します。
例
機械学習の実験でデータをAzure Blob Storageする方法については、Azure ギャラリーを参照してください。
ニュース分類のサンプル: 複数のデータセットを読み込み、Azure Blob Storage。
学生のパフォーマンス のサンプル: TSV 形式で格納されているデータをデータ から読み取Azure Blob Storage。
テクニカル ノート
このセクションには、実装の詳細、ヒント、よく寄せられる質問への回答が含まれています。
一般的な質問
データのインポートを自動化する方法はありますか?
新しいデータを取得し、それを使用して実験を定期的に更新するには、さまざまな方法があります。 多くは、ソース データの発生元と、データ移動に使用するツールによって異なります。 いくつかのアイデアについては、次の記事を参照してください。
通常、実験の実行を自動化するには、Web サービスを作成する必要があります。Web サービスは、タスク スケジューラ、PowerShell、または他のカスタム コードによってトリガーできます。
既存の BLOB から入力データを読み取ろうとするとエラーが発生する理由
考えられる問題は複数あります。
- BLOB では、サポートされていない形式が使用されます
- アカウント自体は、アカウントでまだサポートされていないオプションを使用して作成Machine Learning。
サポートされていない形式: Azure Blob Storage から読み取る場合、Machine Learning では BLOB でブロック BLOB 形式を使用する必要があります。これにより、大きな BLOB を効率的にアップロードできます。 たとえば、CSV ファイルを BLOB ストレージにアップロードした場合、ファイルはブロック BLOB として格納されます。 ただし、プログラムで BLOB ファイルを作成するときに、AppendBlob 型など、サポートされていない別の種類の BLOB を生成している可能性があります。
回避策として、ブロック BLOB の種類を使用 することをお勧 めします。
重要
BLOB が作成された後は、型を変更できません。
詳細については、「ブロック BLOB、 追加 BLOB、ページ BLOB について」を参照してください。
サポートされていないアカウントの種類: インポートモジュールとエクスポート モジュールでは、クラシック デプロイ モデルを使用して作成された Azure ストレージ アカウントからのみ、データの読み取りおよび書き込みを行います。 言い換えると、ホットAzure Blob Storageクール ストレージ アクセス層を提供する新しいアカウントの種類はまだサポートされていません。 一般に、このサービス オプションが使用可能になる前に作成した Azure ストレージ アカウントは影響を受けられません。
Machine Learning で使用するために新しいアカウントを作成する必要がある場合は、[デプロイ モデル] で [クラシック] を選択するか、Resource Manager を使用し、[アカウントの種類] には [Blob Storage ではなく汎用] を選択します。
同じデータを不必要に再読み込みしないようにする方法
ソース データが変更された場合は、データのインポートを再び実行することで、データセットを更新し、新しいデータ を追加できます。 ただし、実験を実行するたびにソースから再び読み込むことを望まない場合、[Use cached results]\(キャッシュされた結果を使用する\) オプションを TRUE に設定します。 このオプションが TRUE に設定されている場合、モジュールは、同じソースと同じ入力オプションを使用して実験が以前に実行されたかどうかを確認し、以前の実行が見つかった場合は、ソースからデータを再読み込みするのではなく、キャッシュ内のデータが使用されます。
ソースから読み取り中のデータをフィルター処理できますか?
データ のインポート モジュール では、データの読み取り中のフィルター処理はサポートされていません。
Machine Learning Studio (クラシック) にデータを読み込んだ後、次のツールを使用してデータを変更できます。
カスタム R スクリプトを使用して、データをフィルター処理または変換します。
相対式 または正規表現 を使用してデータの分割モジュールを使用して、必要なデータを分離し、データセットとして保存します。
必要以上に多くのデータを読み込んだ場合は、新しいデータセットを読み取ってデータセットを上書きし、古い大きなデータと同じ名前で保存する必要があります。
インポート プロセスで、データセットの末尾に末尾の新しい行が見つからなにか行が追加される理由
データのインポート モジュールで、その後に空の行または末尾の新しい行文字が続くデータ行が検出された場合、不足値を含む余分な行がテーブルの末尾に追加されます。
末尾の新しい行を新しい行として解釈する理由は、データのインポートでは、実際の空の行と、ファイルの末尾で Enter キーを押してユーザーが作成した空の行の違いを特定できないことです。
一部の機械学習アルゴリズムでは不足データがサポートされ、この行がケースとして扱われるため (結果に影響を与える可能性があります)、欠損データのクリーンアップを使用して欠損値を確認し、必要に応じて削除する必要があります。
空の行を確認する前に、最後の空の行を部分的に欠損値を持つ他の行から分離することもできます。これは、ソース データ内の実際の欠損値を表す可能性があります。 これを行うには、データの分割を使用してデータセットを 分割します。 [ヘッド N 行の選択] オプションを 選択して、最後の行を含むすべての行を読み取る。
異なる地理的リージョンから読み込まれたデータをインポートすると、どうなるでしょうか。
BLOB またはテーブル ストレージ アカウントが機械学習実験に使用されるコンピューティング ノードとは異なるリージョンにある場合、データ アクセスが遅くなる可能性があります。 さらに、サブスクリプションでのデータのイングレスとエグレスに対して課金されます。
ソース ファイルの一部の文字がヘッダーで正しく表示されないのはなぜですか。
Machine Learning、UTF-8 エンコードがサポートされます。 ソース ファイルで別の種類のエンコードを使用している場合、文字が正しくインポートされない可能性があります。
データを正しく読み込めない問題が発生する場合は、[エンコード付き CSV] オプションを使用し、カスタム区切り記号やコード ページについてのパラメーターを指定してください。
インポート中に変更される禁止文字または文字はありますか?
属性データに引用符またはエスケープ文字のシーケンスが含まれている場合、Microsoft Excel でのこのような文字の規則を使用して処理されます。 その他のすべての文字は、ガイドラインとして次の仕様を使用して処理されます: RFC 4180。
非常に大きなファイルをインポートする必要があります。 推奨される方法は何ですか?
ローカル データセットをローカル データセットに直接アップロードする場合のMachine Learningは 1.98 GB です。 非常に大きなファイルでは、実験アカウントにデータセットを追加するには、完了に時間がかかる場合があります。
- データの GB あたり 10 分以上を見積もる。
- パフォーマンスを最適化するには、Azure サービスと同じリージョン内のストレージ ML使用します。
最大 10 GB の大きなファイルをアップロードするには、いくつかの方法があります。
zip 形式のファイルを使用します。 Zip 形式の Azure ML Studio (クラシック) にデータセットをアップロードし、Zip 圧縮されたデータセットのアンパック モジュールを使用してデータセットをアンパックして保存できます。 Zip 圧縮されたデータセットは、 R スクリプトの実行モジュールを使用してアンパックすることもできますが、パフォーマンスが制限される場合があります。
AzCopy などの高速 Azure ユーティリティを使用します。 AzCopy などのユーティリティMicrosoft Azure使用Storage BLOB データにデータをステージします。 次に、データの インポート モジュールを 使用して、BLOB ストレージから Studio (クラシック) にデータをインポートします。
たとえば、次のコードは、BLOB ストレージに書き込む AzCopy 構文を示しています。
cd "C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy" .\AzCopy.exe /Source:C:\LocalFolder /Dest:https://mystorage.blob.core.windows.net/mycontainer /DestKey:MyStorageAccountKey /Pattern:myfile.csv
指定したエンコードを使用して CSV ファイルをインポートしましたが、 オプションを使用して視覚化すると、テキストが正しく表示されません。 なぜですか?
アップロードされたデータセットの場合、Machine Learningは UTF-8 のみをサポートします。 ただし、データの インポート モジュールでは 、追加のエンコード形式がサポートされています。 そのため、これらの形式のいずれかを使用してファイルをインポートすると、文字が正しく表示されない場合があります。 解決策は、次のいずれかの方法を使用してエンコードを UTF-8 に変換します。
インポートしたデータをデータセットとして保存します。 (CSV データの代わりに保存されたデータセットを使用すると、パフォーマンスが向上する可能性があります)。
R スクリプトの実行モジュールでデータセットを使用している場合は、次のようなスクリプトを使用して正しいコーディングを適用できます。
dataset <- maml.mapInputPort(1) Encoding(dataset$city) <- "UTF-8" maml.mapOutputPort("dataset")
その後、R スクリプトの 実行モジュールの出力で Visualize を使用して、文字が正しく表示されていることを確認できます。
テキスト ファイルをインポートするためのオプションは何ですか? CSV がデータに適していない。
列に収まる非構造化テキストの処理とクリーニングは常に課題です。 ただし、テキスト データの列をインポートする必要がある場合、TSV 形式では多くの場合、問題が少なくなりますが、タブの余分な文字を事前に確認する必要があります。
Azure AI Gallery でテキスト分類テンプレートを確認して、Machine Learning Studio (クラシック) でのテキストの取り込みと処理の例を確認することをお勧めします。
CSV ファイルのカスタム エンコード
データのインポート モジュールの初期 バージョン では、一部の種類の有効な CSV ファイルはサポートされていませんでした。 たとえば、Excel からエクスポートされるデータには、ファイルの正常な解析を妨げる文字が含まれていることがありました。
より広範な区切り記号と文字形式をサポートするために、データのインポートで区切り記号とエンコード形式の選択がサポートされます。 [エンコード付き CSV] オプションを使用すると、CSV ファイルをより堅牢かつ効率的に解析できます。
次の文字エンコードを使用できます。
型 | Encoding |
---|---|
Unicode | Unicode (UTF-8) Unicode Unicode (UTF-32) Unicode (UTF-7) |
CJYK | 繁体字中国語 (Big5) 簡体字中国語 (GB2312) 簡体字中国語 (Mac) 簡体字中国語 (GB2312-80) 簡体字中国語 (ISO-2022) 簡体字中国語 (GB18030) 日本語 (JIS) 韓国語 (ISO) 韓国語 (Mac) |
その他 | 西ヨーロッパ言語 (Windows) 西ヨーロッパ言語 (ISO) ヘブライ語 (ISO-Visual) US ASCII |
ヒント
CSV のインポートが完了したら、インポートしたファイルをデータセットとして保存して、インポートしたデータが実験で UTF-8 エンコードを使用するようにすることをお勧めします。
CSV 形式と TSV 形式でのデータ型の推定
データのインポートモジュールが Azure Blob Storage の CSV または TSV ファイルからデータを読み込む場合、型推測はソースファイル内のカテゴリデータまたは数値データを検索し、新しいデータセットのメタデータで検出された型を表します。
ただし、データが読み込まれた後に メタデータの編集 モジュールで列属性を編集することで、型推測の結果をオーバーライドできます。
モジュールのパラメーター
[全般] オプション
名前 | Range | Type | Default | 説明 |
---|---|---|---|---|
データ ソース | 一覧 | データソースまたはシンク | Azure Blob Storage | データソースには、HTTP、FTP、匿名の HTTPS または FTPS、azure BLOB storage 内のファイル、azure テーブル、Azure SQL Database、オンプレミスの SQL Server データベース、Hive テーブル、または OData エンドポイントを指定できます。 |
認証の種類 | PublicOrSas/アカウント | String | Account | データが SAS URL 経由でアクセスできるパブリックコンテナー内にあるか、アクセスの認証を必要とするプライベートストレージアカウント内にあるかを指定します。 |
キャッシュされた結果の使用 | TRUE または FALSE | Boolean | FALSE | 実行間にデータが読み込まれないようにする場合に選択します |
パブリックまたは SAS-パブリックストレージオプション
名前 | Range | Type | Default | 説明 |
---|---|---|---|---|
URI | any | String | なし | HDFS rest エンドポイント |
ファイル形式 | ARFF、CSV、または TSV | String | CSV | サポートされている形式のいずれかを選択します。 |
URI にヘッダー行がある | Boolean | TRUE または FALSE | TRUE | ファイルにヘッダー行が含まれている場合は True。False の場合、データの最初の行が列見出しとして使用されます。 |
アカウント-プライベートストレージオプション
名前 | Range | Type | Default | 説明 |
---|---|---|---|---|
アカウント名 | any | String | なし | ストレージアカウントの名前を入力します |
アカウント キー | any | SecureString | なし | アカウント キーの貼り付け |
コンテナー、ディレクトリ、または BLOB へのパス | any | String | 該当なし | コンテナーまたはディレクトリの名前を入力します |
BLOB ファイル形式 | ARFF、CSV、または TSV | String | CSV | サポートされている形式のいずれかを選択します。 |
ヘッダー行があるファイル | any | 文字列型 | True | Azure ストレージ アカウント名 |
出力
名前 | 型 | 説明 |
---|---|---|
結果のデータセット | データ テーブル | インポートされたデータを含むデータセット |
例外
例外 | 説明 |
---|---|
エラー 0027 | 同じサイズが必要である 2 つのオブジェクトのサイズが異なる場合に、例外が発生します。 |
エラー 0003 | 1 つ以上の入力が null または空の場合に、例外が発生します。 |
エラー 0029 | 無効な URI が渡された場合に、例外が発生します。 |
エラー 0030 | ファイルをダウンロードできない場合は例外が発生します。 |
エラー 0002 | 1 つ以上のパラメーターが解析できなかった、または指定した型から対象のメソッドの種類で必要な型に変換されなかった場合に、例外が発生します。 |
エラー 0009 | Azure ストレージのアカウント名またはコンテナー名が正しく指定されていない場合、例外が発生します。 |
エラー 0048 | ファイルを開けない場合、例外が発生します。 |
エラー 0046 | 指定したパスにディレクトリを作成できない場合に、例外が発生します。 |
エラー 0049 | ファイルを解析できない場合、例外が発生します。 |
Studio (クラシック) モジュールに固有のエラーの一覧については、「エラー コードMachine Learning参照してください。
API の例外の一覧については、「エラー コードMachine Learning REST API参照してください。
こちらもご覧ください
データのインポート
データのエクスポート
HTTP 経由の Web URL からのインポート
Hive クエリからのインポート
Azure SQL Database からのインポート
Azure Table からのインポート
データ フィード プロバイダーからのインポート
オンプレミスの SQL Server データベースからのインポート