Développez des applications de stockage de tables en utilisant l'Azure Tables SDK pour Java afin de gérer des données NoSQL clé-valeur dans Azure Table Storage ou Cosmos DB.
- Étoiles GitHub
- 3 194
- Fichiers
- 2
- Dernier commit
- 11 nov. 2026
- Licence
- MIT
- Outils autorisés
- —
Que fait la skill azure-data-tables-java ?
azure-data-tables-java est une agent skill. Développez des applications de stockage de tables en utilisant l'Azure Tables SDK pour Java afin de gérer des données NoSQL clé-valeur dans Azure Table Storage ou Cosmos DB.
Résumé généré à partir du SKILL.md de la skill.
À propos du skill azure-data-tables-java
La fonction principale de ce SDK Java est la gestion de données NoSQL clé-valeur au sein des environnements Azure. Les développeurs peuvent utiliser ces outils pour interagir avec Azure Table Storage ou l'API Table de Cosmos DB afin de stocker des données structurées sans schéma à grande échelle. Ce SKILL fournit les composants nécessaires pour manipuler des entités, qui sont des lignes pouvant contenir jusqu'à 252 propriétés.
Un agent doit charger ce SKILL lorsqu'un développeur doit implémenter des opérations CRUD, gérer le cycle de vie des tables ou effectuer des transactions par lots dans une application Java. Il utilise le TableServiceClient pour la gestion des tables elles-mêmes et le TableClient pour la gestion des entités individuelles. L'authentification peut être gérée via diverses méthodes, notamment les chaînes de connexion, les clés partagées, les jetons SAS ou DefaultAzureCredential pour les comptes de stockage.
Cet outil se distingue par sa prise en charge conjointe d'Azure Table Storage et de Cosmos DB via une interface unifiée. Il permet une récupération efficace des données en utilisant les Partition Keys et Row Keys, les filtres OData et les projections de sélection pour optimiser les performances. Les utilisateurs doivent rester attentifs aux limites de taille des entités, qui sont de 1 MB pour le stockage standard et de 2 MB pour Cosmos DB.
Ce qu'un agent peut faire avec
- 1Exécuter des transactions par lots atomiquesSoumettez plusieurs actions d'entités en une seule transaction, à condition qu'elles partagent la même partition key.
- 2Interroger des données avec des filtres ODataRécupérez des sous-ensembles spécifiques de données en appliquant des filtres et en sélectionnant uniquement les propriétés requises.
Rédigé à partir du SKILL.md du skill. Chaque cas d'utilisation est vérifié par rapport à une citation de celui-ci.
Comment installer la skill azure-data-tables-java
Chaque commande copie le dossier de la skill dans le répertoire des skills du client. Redémarrez le client ou démarrez une nouvelle session pour la charger.Installer la skill azure-data-tables-java dans Claude Code
~/.claude/skills/azure-data-tables-java/SKILL.md
$ npx degit microsoft/skills/.github/plugins/azure-sdk-java/skills/azure-data-tables-java ~/.claude/skills/azure-data-tables-javaInstaller la skill azure-data-tables-java dans Claude Code (project)
.claude/skills/azure-data-tables-java/SKILL.md
$ npx degit microsoft/skills/.github/plugins/azure-sdk-java/skills/azure-data-tables-java .claude/skills/azure-data-tables-javaInstaller la skill azure-data-tables-java dans Codex
~/.agents/skills/azure-data-tables-java/SKILL.md
$ npx degit microsoft/skills/.github/plugins/azure-sdk-java/skills/azure-data-tables-java ~/.agents/skills/azure-data-tables-javaInstaller la skill azure-data-tables-java dans Gemini CLI
~/.gemini/skills/azure-data-tables-java/SKILL.md
$ npx degit microsoft/skills/.github/plugins/azure-sdk-java/skills/azure-data-tables-java ~/.gemini/skills/azure-data-tables-javaInstaller la skill azure-data-tables-java dans Claude.ai
npx degit microsoft/skills/.github/plugins/azure-sdk-java/skills/azure-data-tables-java azure-data-tables-java && zip -r azure-data-tables-java.zip azure-data-tables-java # claude.ai → Customize → Skills → + → Create skill → Upload a skill → azure-data-tables-java.zip
Vérifications automatisées
Exécuté le 15 nov. 2026Rapport complet →A réussi nos vérifications automatiques. Ce n'est pas un audit de sécurité : lisez les scripts avant de laisser un agent les exécuter. Fonctionnement des vérifications
- Dépôt source lié et accessiblemicrosoft/skills/.github/plugins/azure-sdk-java/skills/azure-data-tables-java is public and reachablegithub.com/microsoft/skills/tree/HEAD/.github/plugins/azure- ↗Réussi
- Licence open source (OSI)MITspdx.org/licenses/MIT.html ↗Réussi
- Commit ou version publiée au cours de l'année écouléeLast commit 2026-11-11github.com/microsoft/skills/commits ↗Réussi
- Aucun téléchargement-exécution ni vol d'identifiants dans les scriptsNo scripts in the skill folderRéussi
- Aucune instruction cachée dans SKILL.mdNo override phrases, safeguard switches, credential requests or hidden charactersgithub.com/microsoft/skills/blob/HEAD/.github/plugins/azure- ↗Réussi
- Les outils préautorisés sont limitésNo pre-approved tools; the agent asks before using onegithub.com/microsoft/skills/blob/HEAD/.github/plugins/azure- ↗Réussi
- SKILL.md respecte le format Agent SkillsValid name and description; says when to use it; 351 linesgithub.com/microsoft/skills/blob/HEAD/.github/plugins/azure- ↗Réussi
SKILL.md
Voir sur GitHubAzure Tables SDK for Java
Build table storage applications using the Azure Tables SDK for Java. Works with both Azure Table Storage and Cosmos DB Table API.
Installation
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-data-tables</artifactId>
<version>12.6.0-beta.1</version>
</dependency>
Client Creation
With Connection String
import com.azure.data.tables.TableServiceClient;
import com.azure.data.tables.TableServiceClientBuilder;
import com.azure.data.tables.TableClient;
TableServiceClient serviceClient = new TableServiceClientBuilder()
.connectionString("<your-connection-string>")
.buildClient();
With Shared Key
import com.azure.core.credential.AzureNamedKeyCredential;
AzureNamedKeyCredential credential = new AzureNamedKeyCredential(
"<account-name>",
"<account-key>");
TableServiceClient serviceClient = new TableServiceClientBuilder()
.endpoint("<your-table-account-url>")
.credential(credential)
.buildClient();
With SAS Token
TableServiceClient serviceClient = new TableServiceClientBuilder()
.endpoint("<your-table-account-url>")
.sasToken("<sas-token>")
.buildClient();
With DefaultAzureCredential (Storage only)
import com.azure.core.credential.TokenCredential;
import com.azure.identity.AzureIdentityEnvVars;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.identity.ManagedIdentityCredentialBuilder;
// Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=<specific_credential>
TokenCredential credential = new DefaultAzureCredentialBuilder()
.requireEnvVars(AzureIdentityEnvVars.AZURE_TOKEN_CREDENTIALS)
.build();
// Or use a specific credential directly in production:
// See https://learn.microsoft.com/java/api/overview/azure/identity-readme?view=azure-java-stable#credential-classes
// TokenCredential credential = new ManagedIdentityCredentialBuilder().build();
TableServiceClient serviceClient = new TableServiceClientBuilder()
.endpoint("<your-table-account-url>")
.credential(credential)
.buildClient();
Key Concepts
- TableServiceClient: Manage tables (create, list, delete)
- TableClient: Manage entities within a table (CRUD)
- Partition Key: Groups entities for efficient queries
- Row Key: Unique identifier within a partition
- Entity: A row with up to 252 properties (1MB Storage, 2MB Cosmos)
Core Patterns
Create Table
// Create table (throws if exists)
TableClient tableClient = serviceClient.createTable("mytable");
// Create if not exists (no exception)
TableClient tableClient = serviceClient.createTableIfNotExists("mytable");
Get Table Client
// From service client
TableClient tableClient = serviceClient.getTableClient("mytable");
// Direct construction
TableClient tableClient = new TableClientBuilder()
.connectionString("<connection-string>")
.tableName("mytable")
.buildClient();
Create Entity
import com.azure.data.tables.models.TableEntity;
TableEntity entity = new TableEntity("partitionKey", "rowKey")
.addProperty("Name", "Product A")
.addProperty("Price", 29.99)
.addProperty("Quantity", 100)
.addProperty("IsAvailable", true);
tableClient.createEntity(entity);
Get Entity
TableEntity entity = tableClient.getEntity("partitionKey", "rowKey");
String name = (String) entity.getProperty("Name");
Double price = (Double) entity.getProperty("Price");
System.out.printf("Product: %s, Price: %.2f%n", name, price);
Update Entity
import com.azure.data.tables.models.TableEntityUpdateMode;
// Merge (update only specified properties)
TableEntity updateEntity = new TableEntity("partitionKey", "rowKey")
.addProperty("Price", 24.99);
tableClient.updateEntity(updateEntity, TableEntityUpdateMode.MERGE);
// Replace (replace entire entity)
TableEntity replaceEntity = new TableEntity("partitionKey", "rowKey")
.addProperty("Name", "Product A Updated")
.addProperty("Price", 24.99)
.addProperty("Quantity", 150);
tableClient.updateEntity(replaceEntity, TableEntityUpdateMode.REPLACE);
Upsert Entity
// Insert or update (merge mode)
tableClient.upsertEntity(entity, TableEntityUpdateMode.MERGE);
// Insert or replace
tableClient.upsertEntity(entity, TableEntityUpdateMode.REPLACE);
Delete Entity
tableClient.deleteEntity("partitionKey", "rowKey");
List Entities
import com.azure.data.tables.models.ListEntitiesOptions;
// List all entities
for (TableEntity entity : tableClient.listEntities()) {
System.out.printf("%s - %s%n",
entity.getPartitionKey(),
entity.getRowKey());
}
// With filtering and selection
ListEntitiesOptions options = new ListEntitiesOptions()
.setFilter("PartitionKey eq 'sales'")
.setSelect("Name", "Price");
for (TableEntity entity : tableClient.listEntities(options, null, null)) {
System.out.printf("%s: %.2f%n",
entity.getProperty("Name"),
entity.getProperty("Price"));
}
Query with OData Filter
// Filter by partition key
ListEntitiesOptions options = new ListEntitiesOptions()
.setFilter("PartitionKey eq 'electronics'");
// Filter with multiple conditions
options.setFilter("PartitionKey eq 'electronics' and Price gt 100");
// Filter with comparison operators
options.setFilter("Quantity ge 10 and Quantity le 100");
// Top N results
options.setTop(10);
for (TableEntity entity : tableClient.listEntities(options, null, null)) {
System.out.println(entity.getRowKey());
}
Batch Operations (Transactions)
import com.azure.data.tables.models.TableTransactionAction;
import com.azure.data.tables.models.TableTransactionActionType;
import java.util.Arrays;
// All entities must have same partition key
List<TableTransactionAction> actions = Arrays.asList(
new TableTransactionAction(
TableTransactionActionType.CREATE,
new TableEntity("batch", "row1").addProperty("Name", "Item 1")),
new TableTransactionAction(
TableTransactionActionType.CREATE,
new TableEntity("batch", "row2").addProperty("Name", "Item 2")),
new TableTransactionAction(
TableTransactionActionType.UPSERT_MERGE,
new TableEntity("batch", "row3").addProperty("Name", "Item 3"))
);
tableClient.submitTransaction(actions);
List Tables
import com.azure.data.tables.models.TableItem;
import com.azure.data.tables.models.ListTablesOptions;
// List all tables
for (TableItem table : serviceClient.listTables()) {
System.out.println(table.getName());
}
// Filter tables
ListTablesOptions options = new ListTablesOptions()
.setFilter("TableName eq 'mytable'");
for (TableItem table : serviceClient.listTables(options, null, null)) {
System.out.println(table.getName());
}
Delete Table
serviceClient.deleteTable("mytable");
Typed Entities
public class Product implements TableEntity {
private String partitionKey;
private String rowKey;
private OffsetDateTime timestamp;
private String eTag;
private String name;
private double price;
// Getters and setters for all fields
@Override
public String getPartitionKey() { return partitionKey; }
@Override
public void setPartitionKey(String partitionKey) { this.partitionKey = partitionKey; }
@Override
public String getRowKey() { return rowKey; }
@Override
public void setRowKey(String rowKey) { this.rowKey = rowKey; }
// ... other getters/setters
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public double getPrice() { return price; }
public void setPrice(double price) { this.price = price; }
}
// Usage
Product product = new Product();
product.setPartitionKey("electronics");
product.setRowKey("laptop-001");
product.setName("Laptop");
product.setPrice(999.99);
tableClient.createEntity(product);
Error Handling
import com.azure.data.tables.models.TableServiceException;
try {
tableClient.createEntity(entity);
} catch (TableServiceException e) {
System.out.println("Status: " + e.getResponse().getStatusCode());
System.out.println("Error: " + e.getMessage());
// 409 = Conflict (entity exists)
// 404 = Not Found
}
Environment Variables
# Storage Account
AZURE_TABLES_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=... # Alternative to Entra ID auth
AZURE_TABLES_ENDPOINT=https://<account>.table.core.windows.net # Required for all auth methods
AZURE_TOKEN_CREDENTIALS=prod # Required only if DefaultAzureCredential is used in production
# Cosmos DB Table API
COSMOS_TABLE_ENDPOINT=https://<account>.table.cosmosdb.azure.com # Alternative endpoint for Cosmos DB Table API
Best Practices
- Partition Key Design: Choose keys that distribute load evenly
- Batch Operations: Use transactions for atomic multi-entity updates
- Query Optimization: Always filter by PartitionKey when possible
- Select Projection: Only select needed properties for performance
- Entity Size: Keep entities under 1MB (Storage) or 2MB (Cosmos)
Trigger Phrases
- "Azure Tables Java"
- "table storage SDK"
- "Cosmos DB Table API"
- "NoSQL key-value storage"
- "partition key row key"
- "table entity CRUD"
Fichiers de cette skill
2Questions sur la skill azure-data-tables-java
Comment installer la skill azure-data-tables-java dans Claude Code ?
Exécutez npx degit microsoft/skills/.github/plugins/azure-sdk-java/skills/azure-data-tables-java ~/.claude/skills/azure-data-tables-java. Claude Code charge les skills depuis ~/.claude/skills (tous les projets) ou .claude/skills (un seul projet) et utilise une skill lorsque sa description correspond à la tâche.
Quels clients peuvent utiliser la skill azure-data-tables-java ?
Tout client qui lit le format Agent Skills : Claude Code, Codex, Gemini CLI et claude.ai (envoi sous forme de ZIP). Les scripts de la skill ne s'exécutent que si le client autorise l'exécution de code.
Quels services puis-je utiliser avec ce SDK ?
Le SDK fonctionne aussi bien avec Azure Table Storage qu'avec l'API Table de Cosmos DB.