Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse 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