Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
[Dieses Thema ist Teil der Dokumentation zur Vorabversion und kann geändert werden.]
Elastische Tabellen unterstützen das JavaScript Object Notation (JSON)-Format für Textspalten. Diese Spalten können verwendet werden, um schemafreie, beliebige JSON-Daten gemäß den Bedürfnissen der Anwendung zu speichern. Mit der Nachricht ExecuteCosmosSQLQuery können Sie jede beliebige Cosmos SQL-Abfrage direkt gegen Ihre elastische Tabelle ausführen und Zeilen auf der Grundlage von Eigenschaften innerhalb von JSON filtern.
Ein Beispiel für das Erstellen einer JSON-Spalte finden Sie unter Erstellen einer Spalte im JSON-Format.
JSON-Spaltendaten festlegen
Dieses Beispiel erstellt eine Zeile in der elastischen Tabelle contoso_SensorData, die JSON-Daten in der Spalte contoso_EnergyConsumption enthält.
public static Guid CreateWithJsonData(
IOrganizationService service,
string deviceId,
ref string sessionToken)
{
var entity = new Entity("contoso_sensordata")
{
Attributes =
{
{ "contoso_deviceid", deviceId },
{ "contoso_sensortype", "Humidity" },
{ "contoso_value", 40 },
{ "contoso_energyconsumption", "{ \"power\": 0.55, \"powerUnit\":\"kWh\", \"voltage\": 2, \"voltageUnit\": \"kV\" }",
{ "contoso_timestamp", DateTime.UtcNow},
{ "partitionid", deviceId },
{ "ttlinseconds", 86400 } // 86400 seconds in a day
}
};
var request = new CreateRequest
{
Target = entity
};
var response = (CreateResponse)service.Execute(request);
// Capture the session token
sessionToken = response.Results["x-ms-session-token"].ToString();
return response.id;
}
Abfragen von JSON-Spalten-Daten
In diesem Beispiel wird eine Abfrage in der elastischen Tabelle contoso_SensorData zum Filtern nach allen Zeilen ausgeführt, in denen der energyconsumption.power-Wert mehr als 5 ist.
Alle Tabellenspalten können mit einem c.props-Präfix für den Schemanamen der Spalten abgefragt werden. In diesem Präfix ist c ein Alias oder eine Kurzschreibweise für die elastische Tabelle, die abgefragt wird. Zum Beispiel kann die Spalte contoso_deviceid in der Tabelle contoso_sensordata in der Cosmos SQL-Abfrage mithilfe von c.props.contoso_deviceid referenziert werden.
Erfahren Sie mehr über Abfragen in Azure Cosmos DB für NoSQL.
Das SDK für .NET verfügt noch nicht über Anforderungs- und Antwortklassen für die Nachricht ExecuteCosmosSqlQuery. Sie können die OrganizationRequest-Klasse und die OrganizationResponse-Klasse verwenden.
Die ExecuteCosmosSqlQuery-Nachricht hat die folgenden Eingabeparameter.
| Name des Dataflows | Type | Beschreibung |
|---|---|---|
QueryText |
String | (Erforderlich) Die Cosmos SQL-Abfrage. |
EntityLogicalName |
String | (Erforderlich) Der logische Name der Tabelle. |
QueryParameters |
ParameterCollection | (Optional) Werte für alle Parameter, die im Parameter QueryText angegeben sind. |
PageSize |
Lang | (Optional) Die Anzahl der Datensätze, die auf einer einzelnen Seite zurückgegeben werden. |
PagingCookie |
String | (Optional) Der zu verwendende Paging-Cookie. |
PartitionId |
String | (Optional) Der Partitionid-Wert, um den Bereich der Abfrage festzulegen. |
ExecuteCosmosSqlQuery gibt eine Entität zurück, die ein offener Typ ist. Diese Entität hat die folgenden Attribute.
| Name des Dataflows | Type | Beschreibung |
|---|---|---|
PagingCookie |
String | Ein Wert, der für nachfolgende Requests festgelegt wird, wenn es mehr Ergebnisse gibt. |
HasMore |
Bool | Ein Wert, der angibt, ob die Ergebnisse weitere Datensätze enthalten. |
Result |
String | JSON mit Werten für die Ergebnisse. |
public static List<QueryResult> QueryJsonAttribute(IOrganizationService service)
{
StringBuilder query = new();
query.Append("select c.props.contoso_deviceid as deviceId, ");
query.Append("c.props.contoso_timestamp as timestamp, ");
query.Append("c.props.contoso_energyconsumption.power as power ");
query.Append("from c where c.props.contoso_sensortype='Humidity' ");
query.Append("and c.props.contoso_energyconsumption.power > 5");
var request = new OrganizationRequest("ExecuteCosmosSqlQuery")
{
Parameters = {
{ "EntityLogicalName","contoso_sensordata" },
{ "QueryText", query.ToString() }
}
};
OrganizationResponse response = service.Execute(request);
// Deserialized query result into a class with expected schema.
Entity result = (Entity)response.Results["Result"];
return JsonConvert.DeserializeObject<List<QueryResult>>(result["Result"].ToString());
}
public class QueryResult
{
[JsonProperty("deviceId")]
public string DeviceId {get;set;}
[JsonProperty("timestamp")]
public DateTime Timestamp {get;set;}
[JsonProperty("power")]
public int Power {get;set;}
}
Nächste Schritte,
Siehe auch
Elastische Tabellen für Entwickler
Erstellen Sie elastische Tabellen mit Code
Benutzen Sie elastische Tabellen mit Code
Nachrichten zu Massenvorgängen
Beispielcode für elastische Tabellen