Azureの小ネタ (改)

~Azureネタを中心に、色々とその他の技術的なことなどを~

Blobの使用量計算

SmarxさんのBlogに、Blobのトータルサイズを計算する 1 Linerが紹介されてた。
http://blog.smarx.com/posts/computing-the-total-size-of-your-blobs

var blobClient = account.CreateCloudBlobClient();
var size = (from container in blobClient.ListContainers()
    select 
    (from CloudBlob blob in 
     container.ListBlobs(new BlobRequestOptions() { UseFlatBlobListing = true })
     select blob.Properties.Length
     ).Sum()
   ).Sum();

これをがんばってメソッドチェインに変換してみる。うーむ、見にくい。
ま、書きやすいほうを選べばすればいいんだけどね。

 var size = (blobClient.ListContainers().Select(container => 
             (container.ListBlobs(new BlobRequestOptions(){UseFlatBlobListing = true}).
             Cast<CloudBlob>().Select(blob => blob.Properties.Length)).Sum())).Sum();

このサイズが、課金サイズじゃないことに注意。
PageBlobのempty page, BlockBlobのuncommited block メタデータなど、その他諸々あるからとのこと。