36

AzureStorageExplorerを使用してAzureテーブルストレージにクエリを実行しています。T-SQLのように、指定されたテキストを含むすべてのメッセージを検索したい:

message like '%SysFn%'

T-SQLを実行すると、「このリクエストの処理中にエラーが発生しました」と表示されます

Azureでのこのクエリに相当するものは何ですか?

4

3 に答える 3

24

ワイルドカード検索がないため、直接同等のものはありません。サポートされているすべての操作がここに一覧表示されます。eq、gt、ge、lt、leなどが表示されます。これらを利用して、特定の範囲を探すことができます。

パーティションスキームによっては、特定のパーティションキーに基づいてエンティティのサブセットを選択し、各エンティティをスキャンして、message必要な特定のエンティティを見つけることができる場合があります(基本的に部分パーティションスキャン)。

于 2013-03-27T13:57:06.857 に答える
5

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')
于 2020-09-15T15:39:35.140 に答える
4

もう1つのオプションは、Azureテーブルストレージからcsvにログをエクスポートすることです。csvを取得したら、Excelまたはその他のアプリでこれを開いて、テキストを検索できます。

TableXplorer(http://clumsyleaf.com/products/tablexplorer)を使用してテーブルストレージデータをエクスポートできます。これには、フィルタリングされたデータをcsvにエクスポートするオプションがあります。

于 2014-01-27T05:13:56.330 に答える