Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O inventário de blobs do Armazenamento do Azure lista os contêineres, blobs, versões de blobs, snapshots e propriedades associadas em sua conta de armazenamento. O serviço gera relatórios diariamente ou semanalmente em valores separados por vírgulas (CSV) ou no formato Apache Parquet.
Use relatórios de inventário para auditar a retenção, retenção legal ou status de criptografia do conteúdo da sua conta de armazenamento. Você também pode analisar o tamanho total, idade, distribuição por níveis e outros atributos dos seus dados.
O inventário de blob pode simplificar fluxos de trabalho empresariais e acelerar o processamento de dados. Ele fornece automação agendada das APIs Listar Contêineres e Listar Blobs. As regras de inventário filtram o conteúdo dos relatórios por tipo de blob, prefixo ou propriedades selecionadas do blob.
O inventário do blob do Armazenamento do Microsoft Azure está disponível para os seguintes tipos de contas de armazenamento:
- Uso geral v2 Standard
- Armazenamento de blob de blocos Premium
- Armazenamento de blob
Recursos de inventário
O inventário de blobs do Armazenamento do Azure suporta os seguintes recursos e capacidades.
Relatórios de inventário para blobs e contêineres
É possível gerar relatórios de inventário para blobs e contêineres. Um relatório sobre blobs pode conter blobs base, snapshots, tamanho do conteúdo, versões dos blobs e suas propriedades associadas, como hora de criação e hora da última modificação. O relatório não lista recipientes vazios. Um relatório sobre contêineres descreve os contêineres e suas propriedades associadas, como o status da política de imutabilidade e o status de bloqueio legal.
Esquema personalizado
É possível escolher quais campos aparecem nos relatórios. Escolha em uma lista os campos com suporte. Essa lista aparece posteriormente neste artigo.
Formatos de saída CSV e Apache Parquet
É possível gerar um relatório de inventário em formato de saída CSV ou Apache Parquet.
Arquivo de manifesto e evento da Grade de Eventos do Azure por relatório de inventário
O serviço gera um arquivo manifesto e um evento Grade de Eventos do Azure para cada relatório de inventário. O artigo descreve esses itens posteriormente.
Como habilitar os relatórios de inventário
Habilite os relatórios de inventário de blobs adicionando uma política com uma ou mais regras à sua conta de armazenamento. Para obter orientações, veja Habilitar relatórios de inventário de blobs do Armazenamento do Azure.
Atualizando uma política de inventário
Se você configurou o inventário de blob do Armazenamento do Azure antes de junho de 2021, carregue a política, faça as alterações necessárias e depois salve. Quando você recarrega a política, o serviço preenche o destino de cada regra, o arquivo de manifesto e as configurações de eventos do Grade de Eventos do Azure com valores padrão. Você pode mudar esses valores.
Cada regra suporta um contêiner de destino em vez de compartilhar um destino no nível da política.
O serviço gera um arquivo manifest e um evento Grade de Eventos do Azure para cada regra, em vez de para a política.
Política de inventário
Para configurar relatórios de inventário, adicione uma política de inventário com uma ou mais regras a um documento JSON.
{
"enabled": true,
"rules": [
{
"enabled": true,
"name": "inventoryrule1",
"destination": "inventory-destination-container",
"definition": {
"filters": {
"blobTypes": ["blockBlob"]
},
"format": "csv",
"objectType": "blob",
"schedule": "daily",
"schemaFields": ["Name"]
}
},
{
"enabled": true,
"name": "inventoryrule2",
"destination": "inventory-destination-container",
"definition": {
"filters": {},
"format": "csv",
"objectType": "container",
"schedule": "weekly",
"schemaFields": ["Name"]
}
}]
}
Veja o JSON para uma política de inventário selecionando a guia Exibição de código na seção Inventário de blobs do portal do Azure.
| Nome do parâmetro | Tipo de parâmetro | Observações | Obrigatório? |
|---|---|---|---|
enabled |
booleano | Usado para desabilitar toda a política. Quando definido como true, o campo em nível enabled de regra sobrepõe esse parâmetro. Quando desativado, o inventário é desativado para todas as regras. |
Sim |
rules |
Matriz de objetos de regra | Pelo menos uma regra é necessária em uma política. Cada política fornece suporte a até 100 regras. | Sim |
Regras de inventário
Uma regra captura as condições de filtragem e os parâmetros de saída necessários para gerar um relatório de inventário. Cada regra cria um relatório de inventário. As regras podem ter prefixos sobrepostos. Um blob pode aparecer em mais de um inventário, dependendo das definições de regra.
Cada regra na política tem vários parâmetros:
| Nome do parâmetro | Tipo de parâmetro | Observações | Obrigatório? |
|---|---|---|---|
name |
cadeia | Um nome de regra pode incluir até 256 caracteres alfanuméricos que diferenciam maiúsculas de minúsculas. O nome precisa ser exclusivo em uma política. | Sim |
enabled |
booleano | Um sinalizador para habilitar ou desabilitar uma regra. O valor padrão é true. | Sim |
definition |
Definição de regra de inventário JSON | Cada definição é composta por um conjunto de filtros de regras. | Sim |
destination |
cadeia | O contêiner de destino onde o serviço gera todos os arquivos de inventário. O contêiner de destino já precisa existir. |
O sinalizador Habilitado para inventário de blobs global tem precedência sobre o parâmetro enabled em uma regra.
Definição de regra
| Nome do parâmetro | Tipo de parâmetro | Observações | Obrigatório |
|---|---|---|---|
filters |
JSON | Filtros determinam se um blob ou recipiente faz parte do inventário. | Sim |
format |
cadeia | Determina o formato de saída do arquivo de inventário. Valores válidos são csv (para formato CSV) e parquet (para formato Apache Parquet). |
Sim |
objectType |
cadeia | Indica se a regra de inventário se aplica a blobs ou contêineres. Os valores válidos são blob e container. |
Sim |
schedule |
cadeia | Especifica quando executar a regra. Os valores válidos são daily e weekly. |
Sim |
schemaFields |
Matriz JSON | Lista os campos de esquema a serem incluídos no inventário. | Sim |
Filtros de regra
Use os seguintes filtros para personalizar um relatório de inventário de blobs:
| Nome do filtro | Tipo do filtro | Observações | Obrigatório? |
|---|---|---|---|
blobTypes |
Matriz de valores de enumeração predefinidos | Valores válidos são blockBlob e appendBlob para contas habilitadas por namespace hierárquico, e blockBlob, appendBlob, e pageBlob para outras contas. Este campo não se aplica ao inventário de contêineres (objectType: container). |
Sim |
creationTime |
Número | Especifica há quantos dias o blob foi criado. Por exemplo, um valor de 3 inclui apenas blobs criados nos últimos três dias. |
Não |
prefixMatch |
Array de até 10 cordas | Se você não definir prefixMatch ou fornecer um prefixo vazio, a regra se aplica a todos os blobs dentro da conta de armazenamento. Um prefixo deve ser um prefixo de nome de contêiner ou um nome de contêiner. Por exemplo: container ou container1/foo. |
Não |
excludePrefix |
Array de até 10 cordas | Especifica os caminhos de blob a serem excluídos do relatório de inventário. Um excludePrefix deve ser um prefixo de nome de contêiner ou um nome de contêiner. Com um vazio excludePrefix, o relatório lista todos os blobs com nomes que correspondem a qualquer prefixMatch string.Para incluir um prefixo, mas excluir um subconjunto específico, use o excludePrefix filtro. Por exemplo, para incluir todas as bolhas sob container-a exceto aquelas sob container-a/folder, defina prefixMatch para container-a e excludePrefix para container-a/folder. |
Não |
includeSnapshots |
booleano | Especifica se o inventário inclui snapshots. O padrão é false. Este campo não se aplica ao inventário de contêineres (objectType: container). |
Não |
includeBlobVersions |
booleano | Especifica se o inventário inclui versões de blobs. O padrão é false. Este campo não se aplica ao inventário de contêineres (objectType: container). |
Não |
includeDeleted |
booleano | Especifica se o inventário inclui blobs excluídos. O padrão é false. Em contas que possuem um namespace hierárquico, esse filtro inclui pastas e blobs em estado de deleção suave.Apenas pastas e arquivos explicitamente excluídos aparecem nos relatórios. Pastas e arquivos filhos excluídos ao excluir uma pasta principal não estão incluídos. |
Não |
Veja o JSON para regras de inventário selecionando a guia Exibição de código na seção Inventário de blobs do portal do Azure. Você especifica filtros dentro de uma definição de regra.
{
"destination": "inventory-destination-container",
"enabled": true,
"rules": [
{
"definition": {
"filters": {
"blobTypes": ["blockBlob", "appendBlob", "pageBlob"],
"prefixMatch": ["inventorytestcontainer1", "inventorytestcontainer2/abcd", "etc"],
"excludePrefix": ["inventorytestcontainer10", "etc/logs"],
"includeSnapshots": false,
"includeBlobVersions": true
},
"format": "csv",
"objectType": "blob",
"schedule": "daily",
"schemaFields": ["Name", "Creation-Time"]
},
"enabled": true,
"name": "blobinventorytest",
"destination": "inventorydestinationContainer"
},
{
"definition": {
"filters": {
"prefixMatch": ["inventorytestcontainer1", "inventorytestcontainer2/abcd", "etc"]
},
"format": "csv",
"objectType": "container",
"schedule": "weekly",
"schemaFields": ["Name", "HasImmutabilityPolicy", "HasLegalHold"]
},
"enabled": true,
"name": "containerinventorytest",
"destination": "inventorydestinationContainer"
}
]
}
Campos de esquema personalizados com suporte para o inventário de blobs
Observação
A coluna Data Lake Storage mostra o suporte em contas que têm o recurso de namespace hierárquico habilitado.
| Campo | Armazenamento de Blobs (suporte padrão) | Data Lake Storage |
|---|---|---|
| Nome (obrigatório) |
|
|
| Creation-Time |
|
|
| Última modificação |
|
|
| LastAccessTime1 |
|
|
| Etag |
|
|
| Tamanho do conteúdo |
|
|
| Tipo de conteúdo |
|
|
| Codificação de conteúdo |
|
|
| Idioma do Conteúdo |
|
|
| Content-CRC64 |
|
|
| Content-MD5 |
|
|
| Controle de Cache |
|
|
| Cache-Disposition |
|
|
| Tipo de Blob |
|
|
| AccessTier |
|
|
| AccessTierChangeTime |
|
|
| Status de locação |
|
|
| Estado de locação |
|
|
| Criptografado pelo servidor |
|
|
| CustomerProvidedKeySHA256 |
|
|
| Metadados |
|
|
| Horário de expiração |
|
|
| hdi_isfolder |
|
|
| Proprietário |
|
|
| Agrupar |
|
|
| Permissões |
|
|
| ACL |
|
|
| Snapshot (disponível e necessário para incluir instantâneos em seu relatório) |
|
|
| Deletado |
|
|
| DeletionId |
|
|
| DeletedTime |
|
|
| DiasRestantesDeRetenção |
|
|
| VersionId (disponível e necessário para incluir versões de blob em seu relatório) |
|
|
| IsCurrentVersion (disponível e necessário para incluir versões de blob em seu relatório) |
|
|
| Contagem de tags |
|
|
| Marcas |
|
|
| CopyId |
|
|
| Fonte de cópia |
|
|
| CopyStatus |
|
|
| CopyProgress |
|
|
| Tempo de conclusão da cópia |
|
|
| Descrição do status da cópia |
|
|
| Data até a qual a Política de Imutabilidade vigora |
|
|
| ImmutabilityPolicyMode |
|
|
| LegalHold |
|
|
| Prioridade de reidratação |
|
|
| Status do arquivo |
|
|
| EncryptionScope |
|
|
| IncrementalCopy |
|
|
| x-ms-blob-sequence-number |
|
|
1 Desabilitado por padrão. Habilitar opcionalmente o rastreamento de tempo de acesso.
Campos de esquema personalizados com suporte para inventário de contêiner
Observação
A coluna Data Lake Storage mostra o suporte em contas que têm o recurso de namespace hierárquico habilitado.
| Campo | Armazenamento de Blobs (suporte padrão) | Data Lake Storage |
|---|---|---|
| Nome (obrigatório) |
|
|
| Última modificação |
|
|
| Etag |
|
|
| Status de locação |
|
|
| Estado de locação |
|
|
| Duração da locação |
|
|
| Metadados |
|
|
| Acesso Público |
|
|
| DefaultEncryptionScope |
|
|
| DenyEncryptionScopeOverride |
|
|
| HasImmutabilityPolicy |
|
|
| HasLegalHold |
|
|
| ArmazenamentoImutávelComControleDeVersãoHabilitado |
|
|
| Excluído (é exibido somente se “Incluir contêineres excluídos” estiver selecionado) |
|
|
| Versão (é exibido somente se “Incluir contêineres excluídos” estiver selecionado) |
|
|
| DeletedTime (Aparece somente se a opção de incluir contêineres excluídos estiver selecionada) |
|
|
| RemainingRetentionDays (Aparece somente se a opção de incluir contêineres excluídos estiver selecionada) |
|
|
Execução de inventário
Se você configurar uma regra para rodar diariamente, ela roda diariamente. Se você configurar uma regra para rodar semanalmente, ela roda todo domingo no UTC.
Uma rodada de inventário pode levar até seis dias antes de falhar. Para entender os fatores que afetam o tempo de funcionamento, veja características de desempenho do inventário Blob.
As sequências não se sobrepõem, então uma sequência deve ser concluída antes que outra sequência com a mesma regra possa começar. Por exemplo, se a execução do dia anterior de uma regra diária ainda estiver em andamento, o serviço não inicia uma nova execução naquele dia. Regras semanais são aplicadas todo domingo, independentemente de uma corrida anterior ter sucesso ou fracassar. Se uma execução não for concluída com sucesso, verifique as execuções subsequentes antes de entrar em contato com o suporte. O desempenho da execução pode variar, então uma execução posterior pode ser concluída com sucesso.
As políticas de inventário são lidas ou gravadas integralmente. Não há suporte para atualizações parciais. As regras de inventário são avaliadas diariamente. Se você mudar uma definição de regra após o serviço avaliar a apólice daquele dia, o serviço avalia suas atualizações no dia seguinte.
Evento de conclusão de inventário
O evento BlobInventoryPolicyCompleted é gerado quando a execução de inventário é concluída para uma regra. Este evento também ocorre se a execução do inventário falha com um erro de usuário antes de começar. Por exemplo, uma política inválida ou um contêiner de destino ausente aciona o evento. O JSON a seguir mostra um evento de exemplo BlobInventoryPolicyCompleted .
{
"topic": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/BlobInventory/providers/Microsoft.EventGrid/topics/BlobInventoryTopic",
"subject": "BlobDataManagement/BlobInventory",
"eventType": "Microsoft.Storage.BlobInventoryPolicyCompleted",
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"data": {
"scheduleDateTime": "2021-05-28T03:50:27Z",
"accountName": "testaccount",
"ruleName": "Rule_1",
"policyRunStatus": "Succeeded",
"policyRunStatusMessage": "Inventory run succeeded, refer manifest file for inventory details.",
"policyRunId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"manifestBlobUrl": "https://testaccount.blob.core.windows.net/inventory-destination-container/2021/05/26/13-25-36/Rule_1/Rule_1-manifest.json"
},
"dataVersion": "1.0",
"metadataVersion": "1",
"eventTime": "2021-05-28T15:03:18Z"
}
A tabela a seguir descreve o esquema do evento BlobInventoryPolicyCompleted.
| Campo | Tipo | Descrição |
|---|---|---|
| scheduleDateTime | cadeia | A hora em que a regra de inventário foi agendada. |
| nome da conta | cadeia | O nome da conta de armazenamento. |
| nome da regra | cadeia | O nome da regra. |
| policyRunStatus | cadeia | O status da execução de inventário. Os valores possíveis são Succeeded, PartiallySucceeded e Failed. |
| policyRunStatusMessage | cadeia | A mensagem de status para a execução de inventário. |
| policyRunId | cadeia | A ID de execução de política para a execução de inventário. |
| manifestBlobUrl | cadeia | A URL de blob do arquivo de manifesto para a execução de inventário. |
Saída de inventário
Cada regra de inventário cria um conjunto de arquivos no contêiner de destino de inventário especificado para essa regra. A produção de estoque está disponível pelo seguinte caminho: https://<accountName>.blob.core.windows.net/<inventory-destination-container>/YYYY/MM/DD/HH-MM-SS/<ruleName> onde:
- accountName é o nome da sua conta de Armazenamento de Blobs do Azure
- inventory-destination-container é o contêiner de destino especificado na regra de inventário
- YYYY/MM/DD/HH-MM-SS é o horário em que o inventário começou.
- ruleName é o nome da regra de inventário.
Arquivos de inventário
Cada execução de inventário gera os seguintes arquivos:
Arquivo de inventário: uma execução de inventário para uma regra gera diversos arquivos nos formatos CSV ou Apache Parquet. Cada arquivo contém objetos correspondentes e os respectivos metadados.
Importante
As rodagens de inventário geram múltiplos arquivos se a contagem de objetos for grande. Para saber mais, confira Perguntas Frequentes sobre produção de diversos arquivos de inventário.
Relatórios no formato Apache Parquet apresentam datas no seguinte formato:
timestamp_millis [number of milliseconds since 1970-01-01 00:00:00 UTC]. Para um arquivo formatado em CSV, a primeira linha é sempre a linha de esquema. A imagem a seguir mostra um arquivo CSV de inventário aberto no Microsoft Excel.
Importante
Os caminhos de blob que aparecem em um arquivo de inventário podem não aparecer em nenhuma ordem específica.
Arquivo de soma de verificação: Um arquivo de soma de verificação contém a soma de verificação MD5 do conteúdo do arquivo
manifest.json. O nome do arquivo de soma de verificação é<ruleName>-manifest.checksum. A geração do arquivo de soma de verificação marca a conclusão de uma execução de regra de inventário.Arquivo de manifesto: Um arquivo
manifest.jsoncontém os detalhes dos arquivos de inventário gerados para essa regra. O nome do arquivo é<ruleName>-manifest.json. Este arquivo também captura a definição da regra e o caminho até o inventário dessa regra. O JSON a seguir mostra o conteúdo de um arquivo de exemplomanifest.json.{ "destinationContainer" : "inventory-destination-container", "endpoint" : "https://testaccount.blob.core.windows.net", "files" : [ { "blob" : "2021/05/26/13-25-36/Rule_1/Rule_1.csv", "size" : 12710092 } ], "inventoryCompletionTime" : "2021-05-26T13:35:56Z", "inventoryStartTime" : "2021-05-26T13:25:36Z", "ruleDefinition" : { "filters" : { "blobTypes" : [ "blockBlob" ], "includeBlobVersions" : false, "includeSnapshots" : false, "prefixMatch" : [ "penner-test-container-100003" ] }, "format" : "csv", "objectType" : "blob", "schedule" : "daily", "schemaFields" : [ "Name", "Creation-Time", "BlobType", "Content-Length", "LastAccessTime", "Last-Modified", "Metadata", "AccessTier" ] }, "ruleName" : "Rule_1", "status" : "Succeeded", "summary" : { "objectCount" : 110000, "totalObjectSize" : 23789775 }, "version" : "1.0" }Esse arquivo é criado quando a execução é iniciada. O campo
statusdesse arquivo é definido comoPendingaté que a execução seja concluída. Após a conclusão da execução, esse campo é definido para um status de conclusão (por exemplo:SucceededouFailed).
Preços e cobrança
A precificação do estoque é baseada no número de blobs e contêineres que você escaneia durante o período de faturamento. A página de preços do Armazenamento de Blobs do Azure mostra o preço por um milhão de objetos verificados. Por exemplo, se o preço para examinar um milhão de objetos for $0.003, sua conta contiver três milhões de objetos e você produzir quatro relatórios em um mês, sua fatura será de 4 * 3 * $0.003 = $0.036.
Após criar arquivos de inventário, você incorre em custos adicionais padrão de armazenamento e operações de dados para armazenar, ler e escrever os arquivos gerados pelo inventário na conta.
Se uma regra contiver um prefixo que se sobrepõe a um prefixo de qualquer outra regra, o mesmo blob pode aparecer em mais de um relatório de inventário. Nesse caso, você paga por ambas as situações. Por exemplo, suponha que o elemento prefixMatch de uma regra seja definido como ["inventory-blob-1", "inventory-blob-2"] e o elemento prefixMatch de outra regra seja definido como ["inventory-blob-10", "inventory-blob-20"]. Um objeto nomeado inventory-blob-200 aparece em ambos os relatórios de inventário.
Snapshots e versões de um blob também são contabilizados para cobrança, mesmo se você definir os filtros includeSnapshots e includeBlobVersions como false. Esses valores de filtro não afetam a cobrança. É possível usá-los somente para filtrar o que aparece no relatório.
Para saber mais sobre os preços do inventário do Armazenamento do Azure Blob, veja Preços do Armazenamento de Blobs do Azure.
Suporte a recursos
O suporte para esse recurso pode ser afetado ao habilitar o Data Lake Storage Gen2, o protocolo NFS (Sistema de Arquivos de Rede) 3.0 ou o protocolo SFTP (Protocolo de Transferência de Arquivo SSH). Se você tiver habilitado qualquer um desses recursos, consulte o Suporte a recursos de Armazenamento de Blobs nas contas de Armazenamento do Microsoft Azure para avaliar o suporte para esse recurso.
Limitações e problemas conhecidos
Esta seção descreve as limitações e problemas conhecidos do recurso de inventário do Armazenamento do Azure Blob.
A contagem de objetos e o tamanho dos dados do relatório de inventário não devem ser comparados ao faturamento
Um relatório de inventário não inclui metadados, logs do sistema e propriedades, então não compare com a contagem de objetos faturados e o tamanho dos dados da conta de armazenamento.
Trabalhos de inventário demoram mais para serem concluídos em certos casos
Um trabalho de inventário pode demorar mais nos seguintes casos:
Você adiciona uma grande quantidade de dados novos.
Você executa uma regra ou conjunto de regras pela primeira vez.
A corrida de inventário pode demorar mais do que as subsequentes.
Uma execução de inventário processa uma grande quantidade de dados em contas habilitadas por namespace hierárquico.
Um trabalho de inventário pode levar mais de um dia para ser concluído para contas hierárquicas habilitadas por namespace que possuem centenas de milhões de blobs. Às vezes, o trabalho de inventário falha e não cria um arquivo de inventário. Se um trabalho não for concluído com sucesso, verifique os trabalhos seguintes para ver se eles foram concluídos antes de entrar em contato com o suporte.
Não há opção para gerar um relatório retrospectivamente para uma data específica.
Os trabalhos de inventário não podem gravar relatórios em contêineres que têm uma política de replicação de objeto
Uma política de replicação de objeto pode impedir que um trabalho de inventário grave relatórios de inventário no contêiner de destino. Outros cenários podem arquivar os relatórios ou torná-los imutáveis quando estão parcialmente concluídos, o que pode causar falhas nos trabalhos de inventário.
Inventário e armazenamento imutável
Você não pode configurar uma política de inventário na conta se o suporte à imutabilidade em nível de versão estiver ativado nessa conta, ou se o suporte à imutabilidade em nível de versão estiver ativado no contêiner de destino que você define na política de inventário.
Os relatórios podem excluir os blobs excluídos de modo reversível em contas com um namespace hierárquico
Se você excluir um contêiner ou diretório quando o soft delete estiver ativado, o serviço o marca e todo o seu conteúdo como excluídos temporariamente. No entanto, apenas o contêiner ou diretório, informado como um blob de tamanho zero, aparece em um relatório de inventário. O relatório não inclui blobs filhos excluídos temporariamente, mesmo que você defina o campo includeDeleted da política como true. Esse comportamento pode criar uma diferença entre métricas de capacidade no portal do Azure e no relatório de inventário.
Apenas os blobs que você exclui explicitamente aparecem nos relatórios. Para obter uma listagem completa de todos os blobs deletados de forma suave (diretório e todos os blobs filhos), as cargas de trabalho devem deletar cada blob em um diretório antes de excluir o diretório em si.
Lidar com duplicatas no inventário de blobs
O Blob Inventory opera em um sistema distribuído, o que significa que, em casos raros, entradas duplicadas de blob podem aparecer em seus relatórios.
Se o seu caso de uso exigir entradas de blob exclusivas ao pós-processar um relatório de inventário, use o campo Name para retornar apenas blobs exclusivos.
Se seu relatório incluir versões de blobs, use ambos os Name campos e Version ID juntos para identificar e retornar apenas os blobs e versões únicos.