すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:MaxCompute を使用した OSS データのクエリと分析

最終更新日:Mar 21, 2026

MaxCompute の外部テーブル機能を使用すると、Object Storage Service (OSS) に保存されている CSV ファイルに対して直接 SQL クエリを実行できます。データ移行は不要です。MaxCompute は、大量の OSS データを数分で分析できるため、IoT ログやその他の大規模なテキストデータセットの構造化分析に適した低コストのオプションです。

このチュートリアルでは、以下について説明します。

前提条件

開始する前に、以下が準備できていることを確認してください。

仕組み

  1. ソースデータ (CSV ファイル) を OSS バケットにアップロードします。

  2. MaxCompute で、これらのファイルを含む OSS ディレクトリにマッピングする外部テーブルを作成します。 LOCATION 句は OSS 内のディレクトリを指し、テーブルがクエリされると、MaxCompute はそのディレクトリ内のすべてのファイルをスキャンします。

  3. 外部テーブルに対して SQL クエリを実行します。 MaxCompute はクエリ時に OSS からデータを読み取ります。

外部テーブルを使用した OSS データのクエリ

以下の手順では、IoT 車両のサンプルデータセットを使用して、エンドツーエンドのプロセスを説明します。

ステップ 1:OSS へのデータのアップロード

  1. ご利用のローカルコンピューターに、以下の内容で vehicle.csv という名前のファイルを作成します。

       1,1,51,1,46.81006,-92.08174,9/14/2014 0:00,S
       1,2,13,1,46.81006,-92.08174,9/14/2014 0:00,NE
       1,3,48,1,46.81006,-92.08174,9/14/2014 0:00,NE
       1,4,30,1,46.81006,-92.08174,9/14/2014 0:00,W
       1,5,47,1,46.81006,-92.08174,9/14/2014 0:00,S
       1,6,9,1,46.81006,-92.08174,9/14/2014 0:00,S
       1,7,53,1,46.81006,-92.08174,9/14/2014 0:00,N
       1,8,63,1,46.81006,-92.08174,9/14/2014 0:00,SW
       1,9,4,1,46.81006,-92.08174,9/14/2014 0:00,NE
       1,10,31,1,46.81006,-92.08174,9/14/2014 0:00,N

    各行には、vehicleIdrecordIdpatientIdcallslocationLatitutelocationLongtituerecordTimedirection の 8 つのカンマ区切りのフィールドが含まれています。

  2. vehicle.csv を中国 (杭州) リージョンの examplebucket バケットの demo/ ディレクトリにアップロードします。 詳細については、「オブジェクトのアップロード」をご参照ください。

ステップ 2:MaxCompute クライアントの起動

MaxCompute クライアントを起動します。 詳細については、「MaxCompute クライアントの実行」をご参照ください。

ステップ 3:外部テーブルの作成

OSS の demo/ ディレクトリにマッピングする data_csv_external という名前の非パーティション化外部テーブルを作成します。

CREATE EXTERNAL TABLE IF NOT EXISTS data_csv_external
(
    vehicleId int,
    recordId int,
    patientId int,
    calls int,
    locationLatitute double,
    locationLongtitue double,
    recordTime string,
    direction string
)
STORED BY 'com.aliyun.odps.CsvStorageHandler'
LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/examplebucket/demo/';

ステップ 4:外部テーブルのクエリ

次の SQL ステートメントを実行して、patientId が 25 より大きいレコードを取得します。

select recordId, patientId, direction from data_csv_external where patientId > 25;

想定される出力:

+------------+------------+-----------+
| recordId   | patientId  | direction |
+------------+------------+-----------+
| 1          | 51         | S         |
| 3          | 48         | NE        |
| 4          | 30         | W         |
| 5          | 47         | S         |
| 7          | 53         | N         |
| 8          | 63         | SW        |
| 10         | 31         | N         |
+------------+------------+-----------+

よくある質問

接続時に「You don't exist in project <projectname>」というエラーが表示される

使用されている AccessKey ペアの Alibaba Cloud アカウントまたは RAM ユーザーが MaxCompute プロジェクトに追加されていません。 プロジェクト所有者に連絡してアカウントを追加してください。 詳細については、「Alibaba Cloud アカウントの追加 (プロジェクトレベル)」および「RAM ユーザーの追加 (プロジェクトレベル)」をご参照ください。

完全なエラーコードは ODPS-0420095: Access Denied - Authorization Failed [4002] です。

次のステップ