Gibt es eine Möglichkeit, verschiedene PartionKeys aus einer Tabelle zu erhalten?

8

Derzeit verwende ich den PartitionKey, um Geräte zu unterscheiden, die Daten in Azure Table Services speichern. Ich möchte einen Viewer erstellen, der es mir erlaubt, diese Daten zu durchsuchen, aber es wäre schön, sie so strukturieren zu können, dass ich Daten "nach Gerät" oder nach PartitionKey anzeigen kann. Die Viewer-App wird keine Kenntnis davon haben, welche Geräte existieren, also wäre es großartig, wenn ich irgendwie eine Liste von verschiedenen PartionKeys in einer gegebenen Tabelle zurückbekommen könnte. Ist das möglich, oder werde ich dazu verleitet, eine Metadatentabelle zu erstellen, in die ich für jedes Gerät eine neue Zeile einfüge, und diese dann zur Abfrage verwende?

    
ctacke 12.10.2012, 15:37
quelle

5 Antworten

6

Ich glaube nicht, dass es eine Möglichkeit gibt, alle Partitionsschlüssel abzurufen. Hier ist ein cleverer Workaround: Ссылка

Um aus Avkashs Blog zu zitieren:

  

Ich habe weiter herausgefunden, dass es keine eingebaute API gibt, um eine Liste von zu bekommen   Partitionsschlüssel, stattdessen müsste ich eine Lösung für mich selbst erstellen.   Also lege ich eine einzelne Dummy-Zeile in jede Partition und wann   Ich wollte eine Liste von Partitionsschlüsseln bekommen, die ich gerade nach diesen Dummies abfrage   Gegenstände und sie gaben mir die Liste, die ich suchte.

Ich bin mir sicher, dass Sie das schon gesehen haben, aber für andere, die in dieser Frage vorkommen, denke ich, dass dies der beste Leitfaden für die Funktionalität des Tabellenservice ist: Ссылка mit Beispielen und Links zu den detaillierten API-Dokumenten.

    
JcFx 12.10.2012, 15:38
quelle
11

Erstellen Sie eine einzelne Tabelle zum Speichern Ihrer Partitionen. Partitionieren Sie die Tabelle nach den von Ihnen verwendeten Tabellennamen und fügen Sie für jede von Ihnen erstellte Partition einen Eintrag hinzu.

%Vor%

dann nur diese Tabelle abfragen, um eine Liste der Partitionen zu erhalten. Das ist sehr überschaubar für mich.

%Vor%

Ich wette, das könnte optimiert werden.

    
danatcofo 28.02.2013 18:07
quelle
2

Bedauerlicherweise haben Azure Tables keine Funktionen wie distinct oder andere - betrachten Sie sie als strukturierten Schlüsselspeicher wie ein Dictionary im Speicher. Jede Operation, die Sie ausführen, muss alle Elemente durchlaufen, um eine Teilmenge davon zu erhalten, es sei denn, Sie wissen, welche Schlüssel zuerst geladen werden sollen und verarbeiten diese Unterliste.

Ich würde persönlich einfach eine zweite azurblaue Tabelle verwenden und die Partitionsschlüssel dort (als Zeilenschlüssel) speichern, was Ihnen dann die Möglichkeit gibt, diese um einen anderen Faktor zu gruppieren. Oder verwenden Sie einfach einen einzelnen Partitionsschlüssel für diese zweite Tabelle.

Dies würde Ihnen die beste Leistung und die geringste Menge an Kopfschmerzen geben.

Manchmal ist der einfachste Ansatz der beste, da Sie den Job einfach erledigen können.

Hoffe, das hilft,

    
Karell Ste-Marie 12.10.2012 20:38
quelle
0

Damit erhalten Sie eine Liste aller Partitionsschlüssel in Ihrer Tabelle:

%Vor%

Auch wenn Sie eine große Tabelle haben, sollte sie schnell gefüllt werden, weil sie parallel läuft. Es gibt kein "ConcurrentSet", wenn Sie wollen, also müssen wir ConcurrentDictionary verwenden. Das Byte ist nur ein Platzhalter; Alle Werte befinden sich in partitionKeys.Keys.

    
HaveSpacesuit 13.08.2015 17:52
quelle
0

Ich habe einen ähnlichen Ansatz zuvor mit:

versucht %Vor%

obere wie auch Ihre arbeiten sehr langsam auf großen (Lauf für 70 Millionen Zeilen Tabelle - ca. 2 Stunden) oder Medium, aber mit vielen Eigenschaften Tabelle

    
Sasha Bond 09.01.2017 20:55
quelle

Tags und Links