如何通过 $MetricsCapacityBlob 获取 blob 大小
How to get blobs size through $MetricsCapacityBlob
我正在尝试访问 $MetricsCapacityBlob(SO:Azure Storage Table size)以查看我的 Azure 帐户中 blob 的总大小。这是我的:
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
var cloudTableClient = storageAccount.CreateCloudTableClient();
var table = cloudTableClient.GetTableReference("$MetricsCapacityBlob");
var query = new TableQuery();
var result = table.ExecuteQuery(query).ToList();
问题是,result
的长度始终为 0。我做错了什么?
Problem is, result is always 0 length. What am I doing wrong?
我觉得你的代码没问题。事实上,我在我的一个存储帐户中 运行 此代码针对此 table 并且它返回了结果。您可能得不到返回结果,因为 table 中可能没有数据。您最近是否创建了存储帐户?给它一些时间,数据就会显示出来。
备用解决方案
此外,还有另一种处理存储分析数据的方法,即使用存储客户端库中的 AnalyticsClient
命名空间。请参阅下面的示例代码,它获取昨天的存储大小。
CloudStorageAccount account = new CloudStorageAccount(new StorageCredentials(StorageAccount, StorageAccountKey), true);
var client = account.CreateCloudAnalyticsClient();
var yesterday = DateTime.UtcNow.Date.AddDays(-1).ToString("yyyyMMddT0000");
var queryResult = client.CreateCapacityQuery().Where(q => q.PartitionKey == yesterday).ToList();
foreach (var item in queryResult)
{
Console.WriteLine(item.RowKey + " = " + item.Capacity);
}
这是另一个使用 Microsoft.WindowsAzure.Storage 版本 8.1.1.0 in Asp.NET Core 1.1 的替代解决方案。
CloudTableClient tableClient = _storageAccount.CreateCloudTableClient();
CloudTable metricsCapacityTable = tableClient.GetTableReference(Constants.AnalyticsConstants.MetricsCapacityBlob);
List<string> selectedColumns = new List<string>();
selectedColumns.Add("Capacity");
string yesterday = DateTime.UtcNow.Date.AddDays(-1).ToString("yyyyMMddT0000");
dataResult = await metricsCapacityTable.ExecuteAsync(TableOperation.Retrieve(yesterday, "data", selectedColumns));
DynamicTableEntity ddte = (DynamicTableEntity)dataResult.Result;
double? dataValueInBytes = ddte.Properties["Capacity"].Int64Value;
我正在尝试访问 $MetricsCapacityBlob(SO:Azure Storage Table size)以查看我的 Azure 帐户中 blob 的总大小。这是我的:
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
var cloudTableClient = storageAccount.CreateCloudTableClient();
var table = cloudTableClient.GetTableReference("$MetricsCapacityBlob");
var query = new TableQuery();
var result = table.ExecuteQuery(query).ToList();
问题是,result
的长度始终为 0。我做错了什么?
Problem is, result is always 0 length. What am I doing wrong?
我觉得你的代码没问题。事实上,我在我的一个存储帐户中 运行 此代码针对此 table 并且它返回了结果。您可能得不到返回结果,因为 table 中可能没有数据。您最近是否创建了存储帐户?给它一些时间,数据就会显示出来。
备用解决方案
此外,还有另一种处理存储分析数据的方法,即使用存储客户端库中的 AnalyticsClient
命名空间。请参阅下面的示例代码,它获取昨天的存储大小。
CloudStorageAccount account = new CloudStorageAccount(new StorageCredentials(StorageAccount, StorageAccountKey), true);
var client = account.CreateCloudAnalyticsClient();
var yesterday = DateTime.UtcNow.Date.AddDays(-1).ToString("yyyyMMddT0000");
var queryResult = client.CreateCapacityQuery().Where(q => q.PartitionKey == yesterday).ToList();
foreach (var item in queryResult)
{
Console.WriteLine(item.RowKey + " = " + item.Capacity);
}
这是另一个使用 Microsoft.WindowsAzure.Storage 版本 8.1.1.0 in Asp.NET Core 1.1 的替代解决方案。
CloudTableClient tableClient = _storageAccount.CreateCloudTableClient();
CloudTable metricsCapacityTable = tableClient.GetTableReference(Constants.AnalyticsConstants.MetricsCapacityBlob);
List<string> selectedColumns = new List<string>();
selectedColumns.Add("Capacity");
string yesterday = DateTime.UtcNow.Date.AddDays(-1).ToString("yyyyMMddT0000");
dataResult = await metricsCapacityTable.ExecuteAsync(TableOperation.Retrieve(yesterday, "data", selectedColumns));
DynamicTableEntity ddte = (DynamicTableEntity)dataResult.Result;
double? dataValueInBytes = ddte.Properties["Capacity"].Int64Value;