AzureStorageExplorerを使用してAzureテーブルストレージにクエリを実行しています。T-SQLのように、指定されたテキストを含むすべてのメッセージを検索したい:
message like '%SysFn%'
T-SQLを実行すると、「このリクエストの処理中にエラーが発生しました」と表示されます
Azureでのこのクエリに相当するものは何ですか?
AzureStorageExplorerを使用してAzureテーブルストレージにクエリを実行しています。T-SQLのように、指定されたテキストを含むすべてのメッセージを検索したい:
message like '%SysFn%'
T-SQLを実行すると、「このリクエストの処理中にエラーが発生しました」と表示されます
Azureでのこのクエリに相当するものは何ですか?
ワイルドカード検索がないため、直接同等のものはありません。サポートされているすべての操作がここに一覧表示されます。eq、gt、ge、lt、leなどが表示されます。これらを利用して、特定の範囲を探すことができます。
パーティションスキームによっては、特定のパーティションキーに基づいてエンティティのサブセットを選択し、各エンティティをスキャンして、message
必要な特定のエンティティを見つけることができる場合があります(基本的に部分パーティションスキャン)。
Azure Table Storageでは高度なワイルドカード検索は厳密には不可能ですが、「ge」演算子と「lt」演算子を組み合わせて使用すると、「プレフィックス」検索を実行できます。このプロセスは、ScottHelmeによるブログ投稿で説明されています。
基本的に、このメソッドはASCIIインクリメントを使用して、プロパティが特定のテキスト文字列で始まる行をAzureTableStorageにクエリします。プレフィックス検索を実行するために必要なカスタムフィルターを生成する小さなPowershell関数を作成しました。
Function Get-AzTableWildcardFilter {
param (
[Parameter(Mandatory=$true)]
[string]$FilterProperty,
[Parameter(Mandatory=$true)]
[string]$FilterText
)
Begin {}
Process {
$SearchArray = ([char[]]$FilterText)
$SearchArray[-1] = [char](([int]$SearchArray[-1]) + 1)
$SearchString = ($SearchArray -join '')
}
End {
Write-Output "($($FilterProperty) ge '$($FilterText)') and ($($FilterProperty) lt '$($SearchString)')"
}
}
次に、この関数を次Get-AzTableRow
のように使用できます($ CloudTableがMicrosoft.Azure.Cosmos.Table.CloudTable
オブジェクトです)。
Get-AzTableRow -Table $CloudTable -CustomFilter (Get-AzTableWildcardFilter -FilterProperty 'RowKey' -FilterText 'foo')
もう1つのオプションは、Azureテーブルストレージからcsvにログをエクスポートすることです。csvを取得したら、Excelまたはその他のアプリでこれを開いて、テキストを検索できます。
TableXplorer(http://clumsyleaf.com/products/tablexplorer)を使用してテーブルストレージデータをエクスポートできます。これには、フィルタリングされたデータをcsvにエクスポートするオプションがあります。