クイック スタート:.NET SDK と Azure Cosmos DB で Table API アプリをビルドする

適用対象: Table API

このクイック スタートでは、.NET アプリケーションから Azure Cosmos DB Table API にアクセスする方法について説明します。 Cosmos DB Table API はスキーマレス データ ストアであり、これによりアプリケーションは構造化された NoSQL データをクラウドに格納できます。 データはスキーマレス デザインで格納されるので、新しい属性を持つオブジェクトがテーブルに追加されると、新しいプロパティ (列) がテーブルに自動的に追加されます。

.NET アプリケーションでは Azure.Data.Tables NuGet パッケージを使用して Cosmos DB Table API にアクセスできます。 Azure.Data.Tables パッケージは、.NET Framework (4.7.2 以降) および .NET Core (2.0 以降) アプリケーションの両方で動作する .NET Standard 2.0 ライブラリです。

前提条件

サンプル アプリケーションは.NET Core 3.1 で記述されていますが、原則は .NET Framework および .NET Core アプリケーションの両方に適用されます。 Visual StudioVisual Studio for MacVisual Studio Code のいずれかを IDE として使用できます。

Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。

サンプル アプリケーション

このチュートリアルのサンプル アプリケーションは、リポジトリ (https://github.com/Azure-Samples/msdocs-azure-data-tables-sdk-dotnet) からクローンまたはダウンロードできます。 サンプル リポジトリには、スターター アプリケーションと完成したアプリケーションの両方が含まれています。

git clone https://github.com/Azure-Samples/msdocs-azure-data-tables-sdk-dotnet

サンプル アプリケーションでは、気象データを例に Table API の機能を説明しています。 気象観測を表すオブジェクトの格納と取得には Table API が使用されます。これには、Table AIP のスキーマレス機能を示すために追加のプロパティを持つオブジェクトを格納する操作が含まれます。

Table API を使用して Cosmos DB テーブルへ格納されたデータを示す、完成したアプリケーションのスクリーンショット。

1 - Azure Cosmos DB アカウントを作成する

まず、自分のアプリケーションで使用するテーブルが組み込まれる Cosmos DB Table API アカウントを作成します。 これを行うには、Azure portal、Azure CLI、または Azure PowerShell を使用します。

Azure portal にログインし、これらの手順に従って Cosmos DB アカウントを作成します。

手順 Screenshot
Azure portal で次の操作を行います。
  1. Azure portal の上部の検索バーに「cosmos db」と入力します。
  2. 検索バーの下に表示されるメニューの [サービス] で、「Azure Cosmos DB」とラベル付けされた項目を選択します。
上部のツール バーにある検索ボックスを使用して、Azure で Cosmos DB アカウントを検索する方法を示すスクリーンショット。
On the Azure Cosmos DB page select +Create. Azure の Cosmos DB アカウントのページでの [作成] ボタンの場所を示すスクリーンショット。
On the Select API option page choose the Azure Table option. [Azure テーブル] オプションが選択すべき正しいオプションとして示されているスクリーンショット。
On the Create Azure Cosmos DB Account - Azure Table page, fill out the form as follows.
  1. Create a new resource group for the storage account named rg-msdocs-tables-sdk-demo by selecting the Create new link under Resource group.
  2. Give your storage account a name of cosmos-msdocs-tables-sdk-demo-XYZ where XYZ are any three random characters to create a unique account name. Azure Cosmos DB account names must be between 3 and 44 characters in length and may contain only lowercase letters, numbers or the hyphen (-) character.
  3. Select the region for your storage account.
  4. Select Standard performance.
  5. Select Provisioned throughput for this example under Capacity mode.
  6. Select Apply under Apply Free Tier Discount for this example.
  7. Select the Review + create button at the bottom of the screen and then select "Create" on the summary screen to create your Azure Cosmos DB account. This process may take several minutes.
Cosmos DB アカウント作成ページのフィールドへの入力方法を示すスクリーンショット。

2 - テーブルを作成する

次に、アプリケーションで使用するテーブルを Cosmos DB アカウント内に作成する必要があります。 従来のデータベースとは異なり、指定する必要があるのはテーブルの名前のみであり、テーブルのプロパティ (列) は指定する必要はありません。 データがテーブルに読み込まれると、必要に応じてプロパティ (列) が自動的に作成されます。

Azure portal で次の手順を実行して、Cosmos DB アカウント内にテーブルを作成します。

手順 Screenshot
次の Azure portal で、Azure Cosmos DB アカウントの概要ページに移動します。 Cosmos DB アカウントの概要ページに移動するには、上部の検索バーに Cosmos DB アカウントの名前 (cosmos-msdocs-tables-sdk-demo-XYZ) を入力し、リソース見出しの下を確認します。Azure Cosmos DB アカウントの名前を選択し、概要ページに進みます。 上部のツール バーにある検索ボックスを使用して、Cosmos DB アカウントを検索する方法を示すスクリーンショット。
On the overview page, select +Add Table. The New Table dialog will slide out from the right side of the page. [テーブルの追加] ボタンの位置を示すスクリーンショット。
[新しいテーブル] ダイアログで、次のようにフォームに記入します。
  1. テーブル ID として「WeatherData」という名前を入力します。 これがテーブルの名前になります。
  2. この例では "テーブル スループット (自動スケール) " の下で [手動] を選択します。
  3. 推定 RU/秒で既定値の 400 を使用します。
  4. [OK] ボタンを選択してテーブルを作成します。
[新しいテーブル] ダイアログ ボックスで Cosmos DB テーブルの情報の入力方法を示すスクリーンショット。

3 - Cosmos DB の接続文字列を取得する

Cosmos DB 内のテーブルにアクセスするには、アプリケーションに CosmosDB Storage アカウントのテーブル接続文字列が必要です。 この接続文字列は、Azure portal、Azure CLI、または Azure PowerShell を使用して取得できます。

手順 Screenshot
On the left hand side of the Azure Cosmos DB account page, locate the menu item named Connection String under the Settings header and select it. You will be taken to a page where you can retrieve the connection string for the storage account. Cosmos DB ページの接続文字列リンクの位置を示すスクリーンショット。
Copy the PRIMARY CONNECTION STRING value to use in your application. 選択してアプリケーションで使用する接続文字列を示すスクリーンショット。

Cosmos DB アカウントの接続文字列はアプリケーションのシークレットと見なされ、他のアプリケーションのシークレットやパスワードと同様に保護する必要があります。 この例ではシークレット マネージャー ツールを使用して、開発中に接続文字列を保管し、アプリケーションで使用できるようにします。 シークレット マネージャー ツールは Visual Studio と .NET CLI のいずれからもアクセスできます。

Visual Studio からシークレット マネージャー ツールを開くには、プロジェクトを右クリックし、コンテキスト メニューから [ユーザー シークレットの管理] を選択します。 これにより、プロジェクトの secrets.json ファイルが開きます。 このファイルの内容を、以下に示す JSON に置き換え、Cosmos DB テーブルの接続文字列を入力します。

{
  "ConnectionStrings": {
    "CosmosTableApi": "<cosmos db table connection string>"
  }  
}

4 - Azure.Data.Tables NuGet パッケージをインストールする

.NET アプリケーションから Cosmos DB Table API にアクセスするには、Azure.Data.Tables NuGet パッケージをインストールします。

Install-Package Azure.Data.Tables

5 - Startup.cs で Table クライアントを構成する

Azure SDK は、クライアント オブジェクトを使用して Azure と通信し、Azure に対してさまざまな操作を実行します。 TableClient オブジェクトは、Cosmos DB Table API と通信するために使用されるオブジェクトです。

通常、アプリケーションではテーブルごとに 1 つの TableClient オブジェクトが作成され、アプリケーション全体で使用されます。 このためには、依存関係の挿入 (DI) を使用し、TableClient オブジェクトをシングルトンとして登録することをお勧めします。 Azure SDK で DI を使用する方法の詳細については、「Azure SDK for .NET での依存関係の挿入」を参照してください。

アプリケーションの Startup.cs ファイルで、次のコード スニペットと一致するように ConfigureServices() メソッドを編集します。

public void ConfigureServices(IServiceCollection services)
{
    services.AddRazorPages()
        .AddMvcOptions(options =>
        {
            options.Filters.Add(new ValidationFilter());
        });
    
    var connectionString = Configuration.GetConnectionString("CosmosTableApi");
    services.AddSingleton<TableClient>(new TableClient(connectionString, "WeatherData"));
    
    services.AddSingleton<TablesService>();
}

また、次の using ステートメントを Startup.cs ファイルの先頭に追加する必要があります。

using Azure.Data.Tables;

6 - Cosmos DB テーブル操作を実装する

サンプル アプリケーションの Cosmos DB テーブル操作はすべて、Services ディレクトリにあるクラス TableService に実装されます。 Azure.Data.Tables SDK パッケージ内のオブジェクトを操作するには、このファイルの先頭にある Azure および Azure.Data.Tables 名前空間をインポートする必要があります。

using Azure;
using Azure.Data.Tables;

TableService クラスの先頭に、TableClient オブジェクトのメンバー変数と、TableClient オブジェクトをクラスに挿入するためのコンストラクターを追加します。

private TableClient _tableClient;

public TablesService(TableClient tableClient)
{
    _tableClient = tableClient;
}

テーブルから行を取得する

TableClient クラスに含まれている Query メソッドにより、テーブルから行を選択できるようになります。 この例では、このメソッドにパラメーターが渡されないため、テーブルからすべての行が選択されます。

このメソッドは、返されるモデル クラス データを指定する ITableEntity 型のジェネリック パラメーターも取ります。 このケースでは、組み込みの TableEntity クラスが使用されます。つまり、Query メソッドは結果として Pageable\<TableEntity\> コレクションを返します。

public IEnumerable<WeatherDataModel> GetAllRows()
{
    Pageable<TableEntity> entities = _tableClient.Query<TableEntity>();

    return entities.Select(e => MapTableEntityToWeatherDataModel(e));
}

Azure.Data.Tables パッケージで定義されている TableEntity クラスには、テーブルのパーティション キーと行キーの値のプロパティが含まれています。 この 2 つの値により、テーブル内の行の一意のキーが形成されます。 このサンプル アプリケーションでは、観測所 (市町村) の名前がパーティション キーに格納され、観測日時が行キーに格納されます。 その他のプロパティ (温度、湿度、風速) はすべて、TableEntity オブジェクトのディクショナリに格納されます。

一般的に、TableEntity オブジェクトは各自で定義するオブジェクトにマップします。 サンプル アプリケーションでは、この目的で Models ディレクトリに WeatherDataModel クラスが定義されます。 このクラスには観測所名と観測日のプロパティが含まれており、これらのプロパティにパーティション キーと行キーがマップされます。これにより、これらの値についてよりわかりやすいプロパティ名が提供されます。 そして、オブジェクトのその他のプロパティをすべて格納するため、ディクショナリが使用されます。 これはテーブル ストレージを使用する場合の一般的なパターンです。行には任意の数のプロパティを追加でき、モデル オブジェクトでそれらをすべて取り込む必要があるためです。 このクラスには、クラスのプロパティをリストするメソッドも含まれています。

public class WeatherDataModel 
{
    // Captures all of the weather data properties -- temp, humidity, wind speed, etc
    private Dictionary<string, object> _properties = new Dictionary<string, object>();

    public string StationName { get; set; }

    public string ObservationDate { get; set; }

    public DateTimeOffset? Timestamp { get; set; }

    public string Etag { get; set; }

    public object this[string name] 
    { 
        get => ( ContainsProperty(name)) ? _properties[name] : null; 
        set => _properties[name] = value; 
    }
    
    public ICollection<string> PropertyNames => _properties.Keys;

    public int PropertyCount => _properties.Count;

    public bool ContainsProperty(string name) => _properties.ContainsKey(name);       
}

MapTableEntityToWeatherDataModel メソッドは、TableEntity オブジェクトを WeatherDataModel オブジェクトにマップするために使用されます。 TableEntity オブジェクトには、オブジェクトのテーブルに含まれているすべてのプロパティ名 (実質的にはテーブル内のこの行の列名) を取得するためのKeysプロパティが含まれています。 MapTableEntityToWeatherDataModel メソッドは、PartitionKeyRowKeyTimestamp、および Etag の各プロパティを直接マップし、Keys プロパティを使用して TableEntity オブジェクト内の他のプロパティを反復処理し、これらのプロパティのうち、既に直接マップされているプロパティを除くすべてを WeatherDataModel オブジェクトにマップします。

次のコード ブロックと一致するように MapTableEntityToWeatherDataModel メソッドのコードを編集します。

public WeatherDataModel MapTableEntityToWeatherDataModel(TableEntity entity)
{
    WeatherDataModel observation = new WeatherDataModel();
    observation.StationName = entity.PartitionKey;
    observation.ObservationDate = entity.RowKey;
    observation.Timestamp = entity.Timestamp;
    observation.Etag = entity.ETag.ToString();

    var measurements = entity.Keys.Where(key => !EXCLUDE_TABLE_ENTITY_KEYS.Contains(key));
    foreach (var key in measurements)
    {
        observation[key] = entity[key];
    }
    return observation;            
}

テーブルから返された行をフィルター処理する

テーブルから返された行をフィルター処理するには、OData スタイルのフィルター文字列を Query メソッドに渡します。 たとえば、2021 年 7 月 1 日午前 0 時から 2021 年 7 月 2 日午前 0 時 (午前 0 時を含む) までの Chicago の気象記録をすべて取得するには、次のフィルター文字列を渡します。

PartitionKey eq 'Chicago' and RowKey ge '2021-07-01 12:00 AM' and RowKey le '2021-07-02 12:00 AM'

すべての OData フィルター演算子については、OData Web サイトの Filter System Query Option に関するセクションで確認できます。

このサンプル アプリケーションでは、FilterResultsInputModel オブジェクトは、ユーザーが指定したフィルター条件をすべて取り込むように設計されています。

public class FilterResultsInputModel : IValidatableObject
{
    public string PartitionKey { get; set; }
    public string RowKeyDateStart { get; set; }
    public string RowKeyTimeStart { get; set; }
    public string RowKeyDateEnd { get; set; }
    public string RowKeyTimeEnd { get; set; }
    [Range(-100, +200)]
    public double? MinTemperature { get; set; }
    [Range(-100,200)]
    public double? MaxTemperature { get; set; }
    [Range(0, 300)]
    public double? MinPrecipitation { get; set; }
    [Range(0,300)]
    public double? MaxPrecipitation { get; set; }
}

このオブジェクトが TableService クラスの GetFilteredRows メソッドに渡されると、null 以外のプロパティ値ごとにフィルター文字列が作成されます。 次に、"and" 句を使用してすべての値を結合することで、結合フィルター文字列が作成されます。 この結合フィルター文字列は TableClient オブジェクトの Query メソッドに渡され、フィルター文字列に一致する行だけが返されます。 同様のメソッドをコード内で使用して、各自のアプリケーションで必要に応じて適切なフィルター文字列を作成できます。

public IEnumerable<WeatherDataModel> GetFilteredRows(FilterResultsInputModel inputModel)
{
    List<string> filters = new List<string>();

    if (!String.IsNullOrEmpty(inputModel.PartitionKey))
        filters.Add($"PartitionKey eq '{inputModel.PartitionKey}'");
    if (!String.IsNullOrEmpty(inputModel.RowKeyDateStart) && !String.IsNullOrEmpty(inputModel.RowKeyTimeStart))
        filters.Add($"RowKey ge '{inputModel.RowKeyDateStart} {inputModel.RowKeyTimeStart}'");
    if (!String.IsNullOrEmpty(inputModel.RowKeyDateEnd) && !String.IsNullOrEmpty(inputModel.RowKeyTimeEnd))
        filters.Add($"RowKey le '{inputModel.RowKeyDateEnd} {inputModel.RowKeyTimeEnd}'");
    if (inputModel.MinTemperature.HasValue)
        filters.Add($"Temperature ge {inputModel.MinTemperature.Value}");
    if (inputModel.MaxTemperature.HasValue)
        filters.Add($"Temperature le {inputModel.MaxTemperature.Value}");
    if (inputModel.MinPrecipitation.HasValue)
        filters.Add($"Precipitation ge {inputModel.MinTemperature.Value}");
    if (inputModel.MaxPrecipitation.HasValue)
        filters.Add($"Precipitation le {inputModel.MaxTemperature.Value}");

    string filter = String.Join(" and ", filters);
    Pageable<TableEntity> entities = _tableClient.Query<TableEntity>(filter);

    return entities.Select(e => MapTableEntityToWeatherDataModel(e));
}

TableEntity オブジェクトを使用してデータを挿入する

テーブルにデータを追加する最も簡単な方法は TableEntity オブジェクトを使用する方法です。 この例では、データが入力モデル オブジェクトから TableEntity オブジェクトにマップされます。 入力オブジェクトで観測所名と観測日時を表すプロパティは、PartitionKey および RowKey プロパティにそれぞれマップされ、これらによりテーブル内の行の一意のキーが形成されます。 その後、入力モデル オブジェクトの追加プロパティが TableEntity オブジェクトのディクショナリ プロパティにマップされます。 最後に TableClient オブジェクトの AddEntity メソッドを使用して、テーブルにデータが挿入されます。

サンプル アプリケーションの InsertTableEntity クラスを変更して、次のコードを含めます。

public void InsertTableEntity(WeatherInputModel model)
{
    TableEntity entity = new TableEntity();
    entity.PartitionKey = model.StationName;
    entity.RowKey = $"{model.ObservationDate} {model.ObservationTime}";

    // The other values are added like a items to a dictionary
    entity["Temperature"] = model.Temperature;
    entity["Humidity"] = model.Humidity;
    entity["Barometer"] = model.Barometer;
    entity["WindDirection"] = model.WindDirection;
    entity["WindSpeed"] = model.WindSpeed;
    entity["Precipitation"] = model.Precipitation;

    _tableClient.AddEntity(entity);
}

TableEntity オブジェクトを使用してデータをアップサートする

テーブルに既に存在するパーティション キーと行キーの組み合わせでそのテーブルに行を挿入しようとすると、エラーが発生します。 このため多くの場合、テーブルに行を追加するときには AddEntity メソッドの代わりに UpsertEntity を使用することが推奨されます。 指定されたパーティション キーと行キーの組み合わせがテーブルに既に存在する場合は、UpsertEntity メソッドにより既存の行が更新されます。 それ以外の場合は行がテーブルに追加されます。

public void UpsertTableEntity(WeatherInputModel model)
{
    TableEntity entity = new TableEntity();
    entity.PartitionKey = model.StationName;
    entity.RowKey = $"{model.ObservationDate} {model.ObservationTime}";

    // The other values are added like a items to a dictionary
    entity["Temperature"] = model.Temperature;
    entity["Humidity"] = model.Humidity;
    entity["Barometer"] = model.Barometer;
    entity["WindDirection"] = model.WindDirection;
    entity["WindSpeed"] = model.WindSpeed;
    entity["Precipitation"] = model.Precipitation;

    _tableClient.UpsertEntity(entity);
}

可変プロパティを使用してデータを挿入またはアップサートする

Cosmos DB Table API を使用する利点の 1 つは、テーブルに読み込まれるオブジェクトに新しいプロパティが含まれている場合、それらのプロパティがテーブルに自動的に追加され、値が Cosmos DB に格納されることです。 従来のデータベースのように、ALTER TABLE などの DDL ステートメントを実行して列を追加する必要はありません。

このモデルを使用すると、時間の経過とともに取り込む必要があるデータを追加または変更する可能性のあるデータ ソースを扱う場合や、異なる入力によりアプリケーションに異なるデータを提供する場合に、アプリケーションに柔軟性が加わります。 サンプル アプリケーションでは、基本的な気象データの他にいくつかの追加の値も送信する観測所をシミュレートできます。 このような新しいプロパティを持つオブジェクトが初めてテーブルに格納されるときに、対応するプロパティ (列) がテーブルに自動的に追加されます。

サンプル アプリケーションでは、オブジェクトのあらゆるプロパティに対応できるように、内部ディクショナリをに基づいて ExpandableWeatherObject クラスが作成されています。 このクラスは、オブジェクトに任意のプロパティ セットが含まれている必要がある場合の一般的なパターンを表します。

public class ExpandableWeatherObject
{
    public Dictionary<string, object> _properties = new Dictionary<string, object>();

    public string StationName { get; set; }

    public string ObservationDate { get; set; }

    public object this[string name]
    {
        get => (ContainsProperty(name)) ? _properties[name] : null;
        set => _properties[name] = value;
    }

    public ICollection<string> PropertyNames => _properties.Keys;

    public int PropertyCount => _properties.Count;

    public bool ContainsProperty(string name) => _properties.ContainsKey(name);
}

Table API を使用してこのようなオブジェクトを挿入またはアップサートするには、展開可能なオブジェクトのプロパティをTableEntity オブジェクトにマップし、必要に応じてTableClientオブジェクトの AddEntity または UpsertEntity メソッドを使用します。

public void InsertExpandableData(ExpandableWeatherObject weatherObject)
{
    TableEntity entity = new TableEntity();
    entity.PartitionKey = weatherObject.StationName;
    entity.RowKey = weatherObject.ObservationDate;

    foreach (string propertyName in weatherObject.PropertyNames)
    {
        var value = weatherObject[propertyName];
        entity[propertyName] = value;
    }
    _tableClient.AddEntity(entity);
}

        
public void UpsertExpandableData(ExpandableWeatherObject weatherObject)
{
    TableEntity entity = new TableEntity();
    entity.PartitionKey = weatherObject.StationName;
    entity.RowKey = weatherObject.ObservationDate;

    foreach (string propertyName in weatherObject.PropertyNames)
    {
        var value = weatherObject[propertyName];
        entity[propertyName] = value;
    }
    _tableClient.UpsertEntity(entity);
}

エンティティを更新する

エンティティを更新するには、TableClient オブジェクトの UpdateEntity メソッドを呼び出します。 Table API を使用して格納されるエンティティ (行) には任意のプロパティ セットが含まれている可能性があるため、多くの場合、前述の ExpandableWeatherObject と同様に Dictionary オブジェクトに基づいて更新オブジェクトを作成すると便利です。 ここで唯一異なる点は、更新中の同時実行制御に使用される Etag プロパティを追加することです。

public class UpdateWeatherObject
{
    public Dictionary<string, object> _properties = new Dictionary<string, object>();

    public string StationName { get; set; }
    public string ObservationDate { get; set; }
    public string Etag { get; set; }

    public object this[string name]
    {
        get => (ContainsProperty(name)) ? _properties[name] : null;
        set => _properties[name] = value;
    }

    public ICollection<string> PropertyNames => _properties.Keys;

    public int PropertyCount => _properties.Count;

    public bool ContainsProperty(string name) => _properties.ContainsKey(name);
}

サンプル アプリケーションでは、このオブジェクトは TableService クラスの UpdateEntity メソッドに渡されます。 このメソッドは、最初に TableClientGetEntity メソッドを使用して Table API から既存のエンティティを読み込みます。 その後、そのエンティティ オブジェクトを更新し、UpdateEntity メソッドを使用して更新内容をデータベースに保存します。 UpdateEntity メソッドがオブジェクトの現在の Etag を取得して、オブジェクトが最初に読み込まれてから変更されていないことを確認する方法に注目してください。 それに関係なくエンティティを更新する必要がある場合は、Etag.Any の値を UpdateEntity メソッドに渡します。

public void UpdateEntity(UpdateWeatherObject weatherObject)
{
    string partitionKey = weatherObject.StationName;
    string rowKey = weatherObject.ObservationDate;

    // Use the partition key and row key to get the entity
    TableEntity entity = _tableClient.GetEntity<TableEntity>(partitionKey, rowKey).Value;

    foreach (string propertyName in weatherObject.PropertyNames)
    {
        var value = weatherObject[propertyName];
        entity[propertyName] = value;
    }

    _tableClient.UpdateEntity(entity, new ETag(weatherObject.Etag));
}

エンティティを削除する

テーブルからエンティティを削除するには、TableClient オブジェクトの DeleteEntity メソッドを呼び出します。その際に、このオブジェクトのパーティション キーと行キーを指定します。

public void RemoveEntity(string partitionKey, string rowKey)
{
    _tableClient.DeleteEntity(partitionKey, rowKey);           
}

7 - コードを実行する

サンプル アプリケーションを実行して、Cosmos DB Table API を操作します。 アプリケーションを初めて実行する場合にはテーブルが空であるため、データがありません。 アプリケーションの上部にあるいずれかのボタンを使用して、テーブルにデータを追加します。

Table API を使用して Cosmos DB にデータを挿入するためのボタンの位置を示すアプリケーションのスクリーンショット。

[Insert using Table Entity](テーブル エンティティを使用して挿入) ボタンを選択すると、TableEntity オブジェクトを使用して新しい行を挿入またはアップサートできるダイアログが開きます。

TableEntity オブジェクトを使用してデータを挿入するために使用されるダイアログ ボックスを示すアプリケーションのスクリーンショット。

[Insert using Expandable Data](展開可能なデータを使用して挿入) ボタンを選択すると、カスタム プロパティを持つオブジェクトを挿入できるダイアログが表示され、Cosmos DB Table API によって必要に応じてプロパティ (列) がテーブルに自動的に追加される方法が示されます。 [カスタム フィールドの追加] ボタンを使用して、1 つ以上の新しいプロパティを追加し、この機能を示します。

カスタム フィールドのあるオブジェクトを使用してデータを挿入するために使用されるダイアログ ボックスを示すアプリケーションのスクリーンショット。

[Insert Sample Data](サンプル データの挿入) ボタンを使用して、一部のサンプル データを Cosmos DB テーブルに読み込みます。

サンプル データ挿入ボタンの位置を示すアプリケーションのスクリーンショット。

上部のメニューの [Filter Results](結果のフィルター処理) 項目を選択すると、[Filter Results](結果のフィルター処理) ページが表示されます。 フィルター句を作成して Cosmos DB Table API に渡す方法を示すため、このページでフィルター条件を入力します。

結果のフィルター処理ページが表示され、そのページへの移動に使用するメニュー項目が強調表示されているアプリケーションのスクリーンショット。

リソースをクリーンアップする

サンプル アプリケーションの使用が完了したら、この記事に関連するすべての Azure リソースを Azure アカウントから削除する必要があります。 このためには、リソース グループを削除します。

Azure portal を使用してリソース グループを削除するには、次の手順を実行します。

手順 Screenshot
リソース グループに進むには、検索バーにリソース グループの名前を入力します。 次に [リソース グループ] タブで、リソース グループの名前を選択します。 リソース グループを検索する方法を示すスクリーンショット。
リソース グループ ページの上部のツール バーから [リソース グループの削除] を選択します。 [リソース グループの削除] ボタンの位置を示すスクリーンショット。
リソース グループの削除を確認するダイアログが画面の右側に表示されます。
  1. テキスト ボックスにリソース グループの名前を完全に入力し、指示に従って削除を確認します。
  2. ページ下部の [削除] ボタンを選択します。
リソース グループを削除するための確認ダイアログを示すスクリーンショット。

次のステップ

このクイック スタートでは、Azure Cosmos DB アカウントを作成し、データ エクスプローラーを使用してテーブルを作成し、アプリを実行する方法を説明しました。 これで、Table API を使用して、データをクエリできます。