BLOB コンテンツのクエリ
この操作はQuery Blob Contents
、BLOB の内容に単純な構造化照会言語 (SQL) ステートメントを適用し、クエリされたデータのサブセットのみを返します。 を呼び出Query Blob Contents
して、バージョンまたはスナップショットの内容を照会することもできます。
要求
要求は Query Blob Contents
次のように構築できます。 HTTPS をお勧めします。
myaccount をストレージ アカウントの名前に置き換えます。
POST メソッド要求 URI | HTTP バージョン |
---|---|
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=query https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=query&snapshot=<DateTime> https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=query&versionid=<DateTime> |
HTTP/1.0 HTTP/1.1 |
URI パラメーター
次の追加パラメーターを要求 URI に指定できます。
パラメーター | 説明 |
---|---|
snapshot |
省略可能。 スナップショット パラメーターは不透明DateTime な値です。 存在する場合は、クエリを実行する BLOB スナップショットを指定します。 BLOB スナップショットの操作の詳細については、「BLOB のスナップショットをCreateする」を参照してください。 |
versionid |
オプション、バージョン 2019-12-12 以降。 パラメーターは versionid 不透明 DateTime な値です。 存在する場合は、取得する BLOB のバージョンを指定します。 |
timeout |
省略可能。
timeout パラメーターは、秒単位で表されます。 詳細については、「 Blob Storage 操作のタイムアウトを設定する」を参照してください。 |
要求ヘッダー
次の表では、必須および省略可能な要求ヘッダーについて説明します。
要求ヘッダー | 説明 |
---|---|
Authorization |
必須。 認証スキーム、アカウント名、および署名を指定します。 詳細については、「Azure Storage への要求を承認する」をご覧ください。 |
Date または x-ms-date |
必須。 要求に対して協定世界時 (UTC) を指定します。 詳細については、「Azure Storage への要求を承認する」をご覧ください。 |
x-ms-version |
認証された要求では常に必須、匿名要求では省略可能です。 この要求に使用する操作のバージョンを指定します。 詳細については、「Azure Storage サービスのバージョン管理」を参照してください。 |
Content-Type |
必須。 このヘッダーの値は である application/xml; charset=UTF-8 必要があります。 |
x-ms-lease-id:<ID> |
省略可能。 このヘッダーを指定すると、次の 2 つの条件を満たした場合にのみ操作が実行されます。 - BLOB のリースは現在アクティブです。 - 要求で指定されたリース ID は、BLOB のリース ID と一致します。 このヘッダーを指定すると、2 つの条件を満たしていない場合は要求が失敗し、 Query Blob Contents 操作はステータス コード 412 (Precondition Failed) で失敗します。 |
Origin |
省略可能。 要求の送信元を指定します。 このヘッダーが存在すると、応答でクロスオリジン リソース共有 (CORS) ヘッダーが生成されます。 |
x-ms-client-request-id |
省略可能。 ログ記録の構成時にログに記録される 1 kibibyte (KiB) 文字制限を使用して、クライアントによって生成された不透明な値を提供します。 このヘッダーを使用して、クライアント側のアクティビティとサーバーが受信する要求を関連付けるよう強くお勧めします。 |
この操作では、指定した条件が満たされた場合にのみ、条件付きヘッダーを使用して BLOB の内容に対してクエリを実行することもできます。 詳細については、「 Blob Storage 操作の条件付きヘッダーを指定する」を参照してください。
要求本文
このバージョンの の Query Blob Contents
要求本文では、次の XML 形式が使用されます。
<?xml version="1.0" encoding="utf-8"?>
<QueryRequest>
<QueryType>String</QueryType>
<Expression>String</Expression>
<InputSerialization>
<Format>
<Type>String</Type>
<DelimitedTextConfiguration>
<ColumnSeparator>String</ColumnSeparator>
<FieldQuote>String</FieldQuote>
<RecordSeparator>String</RecordSeparator>
<EscapeChar>String</EscapeChar>
<HasHeaders>Boolean</HasHeaders>
</DelimitedTextConfiguration>
<JsonTextConfiguration>
<RecordSeparator>String</RecordSeparator>
</JsonTextConfiguration>
</Format>
</InputSerialization>
<OutputSerialization>
<Format>
<Type>String</Type>
<DelimitedTextConfiguration>
<ColumnSeparator>String</ColumnSeparator >
<FieldQuote>String</FieldQuote >
<RecordSeparator>String</RecordSeparator>
<EscapeChar>String</EscapeChar>
<HasHeaders>Boolean</HasHeaders>
</DelimitedTextConfiguration>
<JsonTextConfiguration>
<RecordSeparator>String</RecordSeparator>
</JsonTextConfiguration>
<ArrowConfiguration>
<Schema>
<Field>
<Type>String</Type>
<Name>String</Name>
</Field>
<Field>
<Type>String</Type>
</Field>
.
.
.
<Field>
<Type>String</Type>
<Precision>Integer</Precision>
<Scale>Integer</Scale>
</Field>
</Schema>
</ArrowConfiguration>
</Format>
</OutputSerialization>
</QueryRequest>
要求本文の要素を次の表に示します。
要素名 | 説明 |
---|---|
QueryRequest |
必須。 クエリ要求設定のセットをグループします。 |
QueryType |
必須。 指定されたクエリ式の型を示します。 現在のバージョンの唯一の有効な値は です SQL 。 |
Expression |
必須。 SQL のクエリ式を示します。 クエリ式の最大サイズは 256 KiB です。 式の構文の詳細については、「 クエリ アクセラレーション: SQL 言語リファレンス」を参照してください。 |
InputSerialization |
省略可能。 BLOB コンテンツの入力シリアル化に関する設定をグループします。 指定しない場合は、区切りテキスト構成が使用されます。 |
Format |
InputSerialization を指定した場合は必須。 BLOB データの形式に関する設定をグループします。 |
Type |
InputSerialization を指定した場合は必須。 形式の種類を示します。 有効な値は delimited 、csv 、json です。 |
DelimitedTextConfiguration |
省略可能。 BLOB が区切りテキストで書式設定されている場合に BLOB データを解釈するために使用される設定をグループします。 |
ColumnSeparator |
省略可能。 列を区切るために使用される文字列を示します。 |
FieldQuote |
省略可能。 特定のフィールドを引用符で囲む文字列を示します。 |
RecordSeparator |
省略可能。 レコードを区切るために使用される文字列を示します。 |
EscapeChar |
省略可能。 エスケープ文字として使用される文字列を示します。 |
HasHeaders |
省略可能。 データにヘッダーがあるかどうかを表すブール型 (Boolean) の値を指定します。 |
JsonTextConfiguration |
省略可能。 BLOB が JSON 形式の場合に BLOB データを解釈するために使用される設定をグループします。 |
RecordSeparator |
省略可能。 レコードを区切るために使用される文字列を示します。 |
OutputSerialization |
省略可能。 応答で返される BLOB のフィルター処理された内容のシリアル化形式を示します。 指定しない場合は、区切りテキスト構成が使用されます。 |
Format |
OutputSerialization を指定した場合は必須。 返される応答の形式に関する設定をグループします。 |
Type |
OutputSerialization を指定した場合は必須。 形式の種類を示します。 有効な値は、delimited 、csv 、json 、arrow です。 |
DelimitedTextConfiguration |
省略可能。 応答を区切りテキストで書式設定する必要がある場合に、応答の書式設定に使用される設定をグループします。 |
ColumnSeparator |
省略可能。 列を区切るために使用される文字列を示します。 |
FieldQuote |
省略可能。 特定のフィールドを引用符で囲む文字列を示します。 |
RecordSeparator |
省略可能。 レコードを区切るために使用される文字列を示します。 |
EscapeChar |
省略可能。 エスケープ文字として使用される文字列を示します。 |
HasHeaders |
省略可能。 データにヘッダーがあるかどうかを表すブール型 (Boolean) の値を指定します。 |
JsonTextConfiguration |
省略可能。 応答を JSON 形式にする必要がある場合に応答の書式設定に使用される設定をグループします。 |
RecordSeparator |
省略可能。 レコードを区切るために使用される文字列を示します。 |
ArrowConfiguration |
省略可能。 応答を Arrow 形式にする必要がある場合に、応答の書式設定に使用される設定をグループします。 |
Schema |
ArrowConfiguration を指定した場合は必須。 返された Arrow 応答のスキーマに関する設定をグループします。 |
Field |
省略可能。 特定のフィールドに関する設定をグループします。 |
Type |
Field を指定した場合は必須。 フィールドの種類を示します。 有効な値は、Int 、Float 、Decimal 、Bool です。 |
Precision |
省略可能。 フィールドの有効桁数を示します。 |
Scale |
省略可能。 フィールドのスケールを示します。 |
Response
応答には HTTP ステータス コード、一連の応答ヘッダー、および応答の本文が含まれます。 応答本文は Avro バイナリ形式です。 応答コンテンツの長さは不明であるため、応答はチャンク エンコードでストリーミングされます。
status code
クエリ要求が整形式で承認されている場合、操作は状態コード 202 (Accepted) を返します。 応答ストリーミング中に発生したエラーまたは進行状況メッセージは、応答本文の一部として返されます。
状態コードの詳細については、「 状態とエラー コード」を参照してください。
応答ヘッダー
この操作の応答には、次のヘッダーが含まれています。 応答には、追加の標準 HTTP ヘッダーも含まれる場合があります。 すべての標準ヘッダーは 、HTTP/1.1 プロトコル仕様に準拠しています。
構文 | 説明 |
---|---|
Last-Modified |
BLOB が最後に変更された日付/時刻を示します。 日付形式は RFC 1123 に従います。 BLOB を変更する操作 (BLOB のメタデータまたはプロパティの更新など) を行うと、BLOB の最終更新時刻が変更されます。 |
Content-Type |
返される結果の形式を指定します。 現在、この値は です avro/binary 。 |
ETag |
条件付きで操作を実行するために使用できる値が含まれています。 詳細については、「 Blob Storage 操作の条件付きヘッダーを指定する」を参照してください。 要求バージョンが 2011-08-18 以降の ETag 場合、値は引用符で囲まれています。 |
Content-Encoding |
要求ヘッダーに指定された値を Content-Encoding 返します。 |
Content-Language |
要求ヘッダーに指定された値を Content-Language 返します。 |
Cache-Control |
このヘッダーが BLOB に対して以前に指定されている場合に返されます。 |
Content-Disposition |
バージョン 2013-08-15 以降で行った要求に対して返されます。 このヘッダーは、x-ms-blob-content-disposition ヘッダーに対して指定された値を返します。応答ヘッダー フィールドは Content-Disposition 、応答ペイロードを処理する方法に関する追加情報を提供します。 応答ヘッダー フィールドを使用して、追加のメタデータを添付することもできます。 たとえば、応答ヘッダー フィールドが に attachment 設定されている場合、ユーザー エージェントは応答を表示しないでください。 代わりに、指定した BLOB 名以外のファイル名を含む [名前を付けて保存] ダイアログが表示されます。 |
x-ms-blob-type: <BlockBlob> |
BLOB の種類を返します。 |
x-ms-request-id |
行われた要求を一意に識別します。 これを使用して、要求のトラブルシューティングを行うことができます。 詳細については、「 API 操作のトラブルシューティング」を参照してください。 |
x-ms-version |
要求の実行に使用されるAzure Blob Storageのバージョンを示します。 バージョン 2009-09-19 以降を使用して行われた要求に含まれます。 このヘッダーは、2009-09-19 バージョンの Blob Storage を使用してコンテナーがパブリック アクセス用にマークされている場合、バージョンが指定されていない匿名要求にも返されます。 |
Date |
サービスが応答を送信した時刻を示す UTC 日付/時刻値。 |
Access-Control-Allow-Origin |
要求に Origin ヘッダーが含まれ、照合ルールで CORS が有効な場合に返されます。 このヘッダーは、一致の場合にオリジン要求ヘッダーの値を返します。 |
Access-Control-Expose-Headers |
要求に Origin ヘッダーが含まれ、照合ルールで CORS が有効な場合に返されます。 このヘッダーは、要求のクライアントまたは発行者に公開される応答ヘッダーの一覧を返します。 |
Vary |
CORS ルールが指定されている場合に、Origin ヘッダーの値と共に返されます。 詳細については、「 Azure Storage の CORS サポート」を参照してください。 |
Access-Control-Allow-Credentials |
要求にヘッダーが含まれており、すべての配信元を Origin 許可しない一致ルールで CORS が有効になっている場合に返されます。 このヘッダーは に true 設定されます。 |
x-ms-blob-committed-block-count |
BLOB に存在するコミット済みブロックの数を示します。 このヘッダーは、追加 BLOB に対してのみ返されます。 |
x-ms-server-encrypted: true/false |
バージョン 2015-12-11 以降。 BLOB データとアプリケーション メタデータが指定されたアルゴリズムを true 介して完全に暗号化されている場合、このヘッダーの値は に設定されます。 BLOB が暗号化されていない場合、または BLOB/アプリケーション メタデータの一部のみが暗号化されている場合、値は に false 設定されます。 |
応答本文
応答本文には、Avro バイナリ形式で一連のメッセージとして送信された BLOB のフィルター処理された内容が含まれます。 次のスキーマを使用します。
{
"type": "record",
"name": "com.microsoft.azure.storage.queryBlobContents.resultData",
"doc": "Holds result data in the format specified for this query (CSV, JSON, etc.).",
"fields": [
{
"name": "data",
"type": "bytes"
}
]
},
{
"type": "record",
"name": "com.microsoft.azure.storage.queryBlobContents.error",
"doc": "An error that occurred while processing the query.",
"fields": [
{
"name": "fatal",
"type": "boolean",
"doc": "If true, this error prevents further query processing. More result data may be returned, but there is no guarantee that all of the original data will be processed. If false, this error does not prevent further query processing."
},
{
"name": "name",
"type": "string",
"doc": "The name of the error"
},
{
"name": "description",
"type": "string",
"doc": "A description of the error"
},
{
"name": "position",
"type": "long",
"doc": "The blob offset at which the error occurred"
}
]
},
{
"type": "record",
"name": "com.microsoft.azure.storage.queryBlobContents.progress",
"doc": "Information about the progress of the query",
"fields": [
{
"name": "bytesScanned",
"type": "long",
"doc": "The number of bytes that have been scanned"
},
{
"name": "totalBytes",
"type": "long",
"doc": "The total number of bytes to be scanned in this query"
}
]
},
{
"type": "record",
"name": "com.microsoft.azure.storage.queryBlobContents.end",
"doc": "Sent as the final message of the response, indicating that all results have been sent.",
"fields": [
{
"name": "totalBytes",
"type": "long",
"doc": "The total number of bytes to be scanned in this query"
}
]
}
]
応答のサンプル
"StatusCode": 200,
"ResponseHeaders": {
"Content-Type": "avro/binary",
"Date": "Fri, 24 Apr 2020 20:25:42 GMT",
"ETag": "\u00220x8D7E88DA9C0A75B\u0022",
"Last-Modified": "Fri, 24 Apr 2020 20:25:43 GMT",
"Transfer-Encoding": "chunked",
"x-ms-blob-type": "BlockBlob",
"x-ms-client-request-id": "f6d1983c-55e5-9f95-6d3d-80d74862d99e",
"x-ms-creation-time": "Fri, 24 Apr 2020 20:25:43 GMT",
"x-ms-lease-state": "available",
"x-ms-lease-status": "unlocked",
"x-ms-request-id": "46c09ab1-b01e-0001-1076-1acef2000000",
"x-ms-version": "2019-12-12"
},
"ResponseBody":{...}
承認
Azure Storage でデータ アクセス操作を呼び出す場合は、承認が必要です。 操作は、以下で Query Blob Contents
説明するように承認できます。
重要
Microsoft では、マネージド ID でMicrosoft Entra IDを使用して、Azure Storage への要求を承認することをお勧めします。 Microsoft Entra IDは、共有キーの承認と比較して優れたセキュリティと使いやすさを提供します。
Azure Storage では、Microsoft Entra ID を使用して BLOB データへの要求を承認することがサポートされています。 Microsoft Entra IDでは、Azure ロールベースのアクセス制御 (Azure RBAC) を使用して、セキュリティ プリンシパルにアクセス許可を付与できます。 セキュリティ プリンシパルには、ユーザー、グループ、アプリケーション サービス プリンシパル、または Azure マネージド ID を指定できます。 セキュリティ プリンシパルは、OAuth 2.0 トークンを返すためにMicrosoft Entra IDによって認証されます。 その後、そのトークンを、Blob service に対する要求を認可するために使用できます。
Microsoft Entra IDを使用した承認の詳細については、「Microsoft Entra IDを使用して BLOB へのアクセスを承認する」を参照してください。
アクセス許可
Microsoft Entraユーザー、グループ、マネージド ID、またはサービス プリンシパルが操作を呼び出Query Blob Contents
すために必要な RBAC アクションと、このアクションを含む最小特権の組み込み Azure RBAC ロールを次に示します。
- Azure RBAC アクション:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
- 最小特権の組み込みロール:ストレージ BLOB データ閲覧者
Azure RBAC を使用したロールの割り当ての詳細については、「 BLOB データにアクセスするための Azure ロールの割り当て」を参照してください。
注釈
- 操作は
Query Blob Contents
、型でのみBlockBlob
サポートされます。 - このバージョンの API では、顧客提供のキーで暗号化された BLOB の内容のクエリはサポートされていません。
- この操作は、 インフラストラクチャ暗号化 が有効になっているアカウントの BLOB ではサポートされていません。
- プライベート コンテナーに属する BLOB を取得するには、
x-ms-version
ヘッダーが必要です。 BLOB が完全または部分的なパブリック アクセスに使用できるコンテナーに属している場合、どのクライアントでもバージョンを指定せずに読み取ることができます。 サービス のバージョンは、パブリック コンテナーに属する BLOB を取得するために必要ありません。 詳細については、「コンテナーと BLOB へのアクセスの制限」をご覧ください。 - 操作を
Query Blob Contents
使用して、区切り/CSV または JSON 形式のオブジェクトにのみクエリを実行できます。
請求
価格要求は、Blob Storage REST API を介して直接、または Azure Storage クライアント ライブラリを介して Blob Storage API を使用するクライアントから送信できます。 これらの要求では、トランザクションあたりの料金が発生します。 トランザクションの種類は、アカウントの課金方法に影響します。 たとえば、読み取りトランザクションは、書き込みトランザクションとは異なる課金カテゴリに計上されます。 次の表は、ストレージ アカウントの種類に基づく要求の課金カテゴリ Query Blob Contents
を示しています。
操作 | ストレージ アカウントの種類 | 課金カテゴリ |
---|---|---|
BLOB コンテンツのクエリ | Premium ブロック BLOB Standard 汎用 v2 |
読み取り操作1 |
1このアカウントでは、読み取り料金に加えて、 クエリ 高速化 - データ スキャン と クエリ 高速化 - データ返された トランザクション カテゴリに対する料金が発生します。 これらのカテゴリの価格は、[Azure Data Lake Storage価格] ページに表示されます。
こちらもご覧ください
Azure Storage の状態とエラー コードに対する要求を承認する Blob Storage エラー コードBlob Storage 操作のタイムアウトを設定する クエリ アクセラレーション: SQL 言語リファレンス