Operaciones en Azure Table Storage con Azure PowerShell

Sugerencia

El contenido de este artículo se aplica a Azure Table Storage. No obstante, ahora hay una oferta premium de Table Storage, la instancia de Azure Cosmos DB for Table que ofrece tablas con rendimiento optimizado, distribución global e índices secundarios automáticos. Para más información al respecto y probar esta oferta, consulte Introducción a Azure Cosmos DB for Table. El lenguaje de programación de este artículo no se admite aún en la oferta premium, pero se agregará en un futuro.

Azure Table Storage es un almacén de datos NoSQL que puede utilizar para almacenar y consultar conjuntos grandes de datos estructurados y no relacionales. Los componentes principales del servicio son tablas, entidades y propiedades. Una tabla es una colección de entidades. Una entidad es un conjunto de propiedades. Cada entidad puede tener hasta 252 propiedades, las cuales son todas pares nombre-valor. En este artículo supondremos que ya está familiarizado con los conceptos del servicio Azure Table Storage. Para más información, consulte Introducción al modelo de datos de Table Service e Introducción a Azure Table Storage mediante .NET.

En este artículo de instrucciones se describen las operaciones de Azure Table Storage más habituales. Aprenderá a:

  • Creación de una tabla
  • Recuperar una tabla
  • Agregar entidades de tabla
  • Consultar una tabla
  • Eliminar entidades de tabla
  • Eliminar una tabla

En este artículo de instrucciones se muestra cómo crear una nueva cuenta de almacenamiento en un nuevo grupo de recursos, de modo que pueda eliminarla fácilmente cuando haya terminado. También puede usar una cuenta de almacenamiento existente.

Los ejemplos requieren los módulos de PowerShell de Az Az.Storage (1.1.0 or greater) y Az.Resources (1.2.0 or greater). En una ventana de PowerShell, ejecute Get-Module -ListAvailable Az* para buscar la versión. Si no aparece nada o necesita una actualización, vea Install and configure Azure PowerShell (Instalar y configurar Azure PowerShell).

Importante

El uso de esta característica de Azure desde PowerShell requiere que tenga el módulo Az instalado. La versión actual de AzTable no es compatible con el módulo de AzureRM anterior. Siga las instrucciones de instalación más recientes para el módulo de Az en caso necesario.

Para obtener información sobre los motivos de compatibilidad en el nombre del módulo, este módulo también está publicado en Galería de PowerShell con el nombre antiguo AzureRmStorageTables. Este documento hará referencia únicamente al nuevo nombre.

Después de instalar o actualizar Azure PowerShell, hay que instalar el módulo AzTable, que contiene los comandos para administrar las entidades. Para instalarlo, ejecute PowerShell como administrador y use el comando Install-Module.

Install-Module AzTable

Autorización de operaciones de datos de tabla

El módulo AzTable de PowerShell admite la autorización con la clave de acceso de la cuenta a través de la autorización de clave compartida. En los ejemplos de este artículo se muestra cómo autorizar operaciones de datos de tabla a través de la clave compartida.

Azure Table Storage admite la autorización con Microsoft Entra ID. Sin embargo, el módulo AzTable de PowerShell no admite de forma nativa la autorización con Microsoft Entra ID. El uso de Microsoft Entra ID con el módulo AzTable requiere que llame a métodos de la biblioteca cliente de .NET desde PowerShell.

Inicio de sesión en Azure

Para comenzar, inicie sesión en la suscripción a Azure con el comando Add-AzAccount y siga las instrucciones de la pantalla.

Add-AzAccount

Recuperación de la lista de ubicaciones

Si no sabe qué ubicación desea usar, puede enumerar las ubicaciones disponibles. Cuando se muestre la lista, busque la que desee usar. En estos ejemplos se utiliza eastus. Guarde este valor en la variable location para usarlo más adelante.

Get-AzLocation | select Location
$location = "eastus"

Creación de un grupo de recursos

Cree un grupo de recursos con el comando New-AzResourceGroup.

Un grupo de recursos de Azure es un contenedor lógico en el que se implementan y se administran los recursos de Azure. Guarde el nombre del grupo de recursos en una variable para usarlo más adelante. En este ejemplo se crea un grupo de recursos denominado pshtablesrg en la región eastus.

$resourceGroup = "pshtablesrg"
New-AzResourceGroup -ResourceGroupName $resourceGroup -Location $location

Crear cuenta de almacenamiento

Cree una cuenta de almacenamiento genérica estándar con almacenamiento con redundancia local (LRS) mediante New-AzStorageAccount. Asegúrese de especificar un nombre de cuenta de almacenamiento único. Luego, obtenga el contexto que representa la cuenta de almacenamiento. Cuando actúa en una cuenta de almacenamiento, puede hacer referencia al contexto en lugar de proporcionar varias veces las credenciales.

$storageAccountName = "pshtablestorage"
$storageAccount = New-AzStorageAccount -ResourceGroupName $resourceGroup `
  -Name $storageAccountName `
  -Location $location `
  -SkuName Standard_LRS `
  -Kind Storage

$ctx = $storageAccount.Context

Creación de una nueva tabla

Para crear una tabla, utilice el cmdlet New-AzStorageTable. En este ejemplo, la tabla se denomina pshtesttable.

$tableName = "pshtesttable"
New-AzStorageTable -Name $tableName -Context $ctx

Recuperación de una lista de tablas de la cuenta de almacenamiento

Recupere una lista de tablas de la cuenta de almacenamiento mediante Get-AzStorageTable.

Get-AzStorageTable -Context $ctx | select Name

Recuperación de una referencia a una tabla específica

Para llevar a cabo operaciones en una tabla, se necesita una referencia a la tabla concreta. Obtenga una referencia mediante Get-AzStorageTable.

$storageTable = Get-AzStorageTable -Name $tableName -Context $ctx

Haga referencia a la propiedad CloudTable de una tabla específica

Importante

El uso de la propiedad CloudTable es obligatorio cuando se trabaja con datos de tabla mediante el módulo AzTable de PowerShell. Llame al comando Get-AzStorageTable para obtener la referencia a este objeto.

Para llevar a cabo operaciones en una tabla con AzTable, devuelva una referencia a la propiedad de CloudTable de una tabla concreta. La propiedad CloudTable expone los métodos de .NET disponibles para administrar datos de tabla desde PowerShell.

$cloudTable = $storageTable.CloudTable

Administrar entidades de tabla

Ya tenemos la tabla. Pasemos a ver ahora cómo administrar las entidades (o filas) de esa tabla.

Las entidades pueden tener hasta 255 propiedades, incluidas tres propiedades del sistema: PartitionKey, RowKey y Timestamp. Usted será responsable de insertar y actualizar los valores de PartitionKey y RowKey. El servidor se encargará de administrar el valor Timestamp, así que no podrá modificarlo. Tanto PartitionKey como RowKey identifican de forma exclusiva todas las entidades de una tabla.

  • PartitionKey: determina la partición en la que se almacena la entidad.
  • RowKey: identifica de forma única la entidad dentro de la partición.

Puede definir hasta 252 propiedades personalizadas para una entidad.

Agregar entidades de tabla

Agregue entidades a una tabla con Add-AzTableRow. En estos ejemplos se usan claves de partición con los valores partition1 y partition2, y las claves de fila equivalen a abreviaturas de estados americanos. Las propiedades de cada entidad son username y userid.

$partitionKey1 = "partition1"
$partitionKey2 = "partition2"

# add four rows 
Add-AzTableRow `
    -table $cloudTable `
    -partitionKey $partitionKey1 `
    -rowKey ("CA") -property @{"username"="Chris";"userid"=1}

Add-AzTableRow `
    -table $cloudTable `
    -partitionKey $partitionKey2 `
    -rowKey ("NM") -property @{"username"="Jessie";"userid"=2}

Add-AzTableRow `
    -table $cloudTable `
    -partitionKey $partitionKey1 `
    -rowKey ("WA") -property @{"username"="Christine";"userid"=3}

Add-AzTableRow `
    -table $cloudTable `
    -partitionKey $partitionKey2 `
    -rowKey ("TX") -property @{"username"="Steven";"userid"=4}

Consultar las entidades de tabla

Puede consultar las entidades de una tabla mediante el comando Get AzTableRow.

Nota:

Los cmdlets Get-AzureStorageTableRowAll, Get-AzureStorageTableRowByPartitionKey, Get AzureStorageTableRowByColumnName y Get-AzureStorageTableRowByCustomFilter están en desuso y se eliminarán en una actualización de una versión futura.

Recuperar todas las entidades

Get-AzTableRow -table $cloudTable | ft

Este comando devuelve un valor similar a la siguiente tabla:

userid username partición clave de fila
1 Chris partition1 CA
3 Christine partition1 WA
2 Jessie partition2 NM
4 Steven partition2 TX

Recuperar el número de entidades de tabla

$totalEntities=(Get-AzTableRow -table $cloudTable | measure).Count
Echo $totalEntities

Este comando da como resultado un recuento numérico de entidades similar al que se muestra a continuación:

4

Recuperar entidades de una clave de partición específica

Get-AzTableRow -table $cloudTable -partitionKey $partitionKey1 | ft

El resultado es similar a la siguiente tabla:

userid username partición clave de fila
1 Chris partition1 CA
3 Christine partition1 WA

Recuperar entidades con un valor específico en una columna específica

Get-AzTableRow -table $cloudTable `
    -columnName "username" `
    -value "Chris" `
    -operator Equal

Con esta consulta se recupera un único registro.

campo value
userid 1
username Chris
PartitionKey partition1
RowKey CA

Recuperar entidades con un filtro personalizado

Get-AzTableRow `
    -table $cloudTable `
    -customFilter "(userid eq 1)"

Con esta consulta se recupera un único registro.

campo value
userid 1
username Chris
PartitionKey partition1
RowKey CA

Actualización de entidades

La actualización de las entidades es un proceso de tres pasos: Primero se recupera la entidad que se va a cambiar, después se realiza el cambio y, finalmente, se confirma el cambio con Update-AzTableRow.

Actualice la entidad con el nombre de usuario = "Jessie" para que refleje el nombre de usuario = "Jessie2". En este ejemplo se indica también otra forma de crear un filtro personalizado con tipos de .NET.

# Create a filter and get the entity to be updated.
[string]$filter = `
    [Microsoft.Azure.Cosmos.Table.TableQuery]::GenerateFilterCondition("username",`
    [Microsoft.Azure.Cosmos.Table.QueryComparisons]::Equal,"Jessie")
$user = Get-AzTableRow `
    -table $cloudTable `
    -customFilter $filter

# Change the entity.
$user.username = "Jessie2"

# To commit the change, pipe the updated record into the update cmdlet.
$user | Update-AzTableRow -table $cloudTable

# To see the new record, query the table.
Get-AzTableRow -table $cloudTable `
    -customFilter "(username eq 'Jessie2')"

En los resultados aparece el registro Jessie2.

campo value
userid 2
username Jessie2
PartitionKey partition2
RowKey NM

Eliminar entidades de tabla

Se puede eliminar una o todas las entidades de la tabla.

Eliminar una entidad

Para eliminar solo una entidad, obtenga una referencia a esa entidad y canalícela en Remove-AzTableRow.

# Set filter.
[string]$filter = `
  [Microsoft.Azure.Cosmos.Table.TableQuery]::GenerateFilterCondition("username",`
  [Microsoft.Azure.Cosmos.Table.QueryComparisons]::Equal,"Jessie2")

# Retrieve entity to be deleted, then pipe it into the remove cmdlet.
$userToDelete = Get-AzTableRow `
    -table $cloudTable `
    -customFilter $filter
$userToDelete | Remove-AzTableRow -table $cloudTable

# Retrieve entities from table and see that Jessie2 has been deleted.
Get-AzTableRow -table $cloudTable | ft

Eliminar todas las entidades de la tabla

Para eliminar todas las entidades de la tabla, recupérelas y canalice los resultados al cmdlet de eliminación.

# Get all rows and pipe the result into the remove cmdlet.
Get-AzTableRow `
    -table $cloudTable | Remove-AzTableRow -table $cloudTable 

# List entities in the table (there won't be any).
Get-AzTableRow -table $cloudTable | ft

Eliminar una tabla

Para eliminar una tabla, use Remove-AzStorageTable. Este cmdlet elimina la tabla, incluidos todos sus datos.

Remove-AzStorageTable -Name $tableName -Context $ctx

# Retrieve the list of tables to verify the table has been removed.
Get-AzStorageTable -Context $Ctx | select Name

Limpieza de recursos

Si ha creado un grupo de recursos y una cuenta de almacenamiento al principio de este artículo de ayuda, puede quitar el grupo de recursos para eliminar todos los recursos creados en este ejercicio. Con este comando se eliminan todos los recursos incluidos en el grupo de recursos, además del grupo de recursos en sí.

Remove-AzResourceGroup -Name $resourceGroup

Pasos siguientes

En este artículo de instrucciones ha aprendido a realizar operaciones habituales de Azure Table Storage con PowerShell, por ejemplo:

  • Creación de una tabla
  • Recuperar una tabla
  • Agregar entidades de tabla
  • Consultar una tabla
  • Eliminar entidades de tabla
  • Eliminar una tabla

Para obtener más información, consulte los siguientes artículos: