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.
Referenzdaten sind ein endliches Dataset, das statisch oder langsam in der Natur verändert wird. Es wird verwendet, um einen Nachschlagevorgang durchzuführen oder Ihre Datenströme zu erweitern. Referenzdaten werden auch als Nachschlagetabelle bezeichnet.
Nehmen Sie sich ein IoT-Szenario als Beispiel an. Sie könnten Metadaten zu Sensoren speichern, die sich nicht häufig ändern, in Referenzdaten. Anschließend könnten Sie ihn mit IoT-Datenströmen in Echtzeit verknüpfen.
Azure Stream Analytics lädt Referenzdaten im Arbeitsspeicher, um eine Streamverarbeitung mit geringer Latenz zu erzielen. Um Referenzdaten in Ihrem Stream Analytics-Auftrag zu nutzen, verwenden Sie in der Regel eine Referenzdatenverknüpfung in Ihrer Abfrage.
Example
Sie können einen Echtzeitdatenstrom von Ereignissen erhalten, wenn Autos eine Mautstelle passieren. Der Tollbooth kann die Kennzeichen in Echtzeit erfassen. Diese Daten können mit einem statischen Dataset verknüpft werden, das Registrierungsdetails enthält, um Lizenzplatten zu identifizieren, die abgelaufen sind.
SELECT I1.EntryTime, I1.LicensePlate, I1.TollId, R.RegistrationId
FROM Input1 I1 TIMESTAMP BY EntryTime
JOIN Registration R
ON I1.LicensePlate = R.LicensePlate
WHERE R.Expired = '1'
Stream Analytics unterstützt Azure Blob Storage, Azure Data Lake Storage Gen2 und Azure SQL-Datenbank als Speicherebene für Referenzdaten. Wenn Sie über die Referenzdaten in anderen Datenspeichern verfügen, versuchen Sie, Azure Data Factory zum Extrahieren, Transformieren und Laden der Daten in einen der unterstützten Datenspeicher zu verwenden. Weitere Informationen finden Sie unter Copy Activity in Azure Data Factory (Übersicht).
Azure Blob Storage und Azure Data Lake Storage Gen2
Referenzdaten werden als Abfolge von Blobs in aufsteigender Reihenfolge des im Blobnamen angegebenen Datums/Uhrzeit modelliert. Blobs können nur am Ende der Sequenz hinzugefügt werden, indem ein Datum/eine Uhrzeit verwendet wird, die größer als das durch den letzten Blob in der Sequenz angegebene ist. Blobs werden in der Eingabekonfiguration definiert.
Weitere Informationen finden Sie unter Verwenden von Referenzdaten aus Blob Storage für einen Stream Analytics-Auftrag.
Konfigurieren von Blob-Referenzdaten
Um Ihre Referenzdaten zu konfigurieren, müssen Sie zunächst eine Eingabe erstellen, die vom Typ Referenzdaten ist. In der folgenden Tabelle werden die eigenschaften erläutert, die Sie angeben müssen, wenn Sie die Referenzdateneingabe mit ihrer Beschreibung erstellen.
| Eigenschaftsname | Description |
|---|---|
| Eingabealias | Ein freundlicher Name, der in der Jobabfrage verwendet wird, um auf diese Eingabe zu verweisen. |
| Speicherkonto | Der Name des Speicherkontos, in dem sich Ihre BLOBs befinden. Wenn es sich im selben Abonnement wie Ihr Stream Analytics-Auftrag befindet, wählen Sie es aus der Dropdownliste aus. |
| Speicherkontoschlüssel | Der geheime Schlüssel, der dem Speicherkonto zugeordnet ist. Dieser Schlüssel wird automatisch ausgefüllt, wenn sich das Speicherkonto im selben Abonnement wie Ihr Stream Analytics-Auftrag befindet. |
| Speichercontainer | Container stellen eine logische Gruppierung für Blobs bereit, die in Blob Storage gespeichert sind. Wenn Sie ein Blob in Blob Storage hochladen, müssen Sie einen Container für dieses Blob angeben. |
| Pfadmuster | Diese erforderliche Eigenschaft wird verwendet, um Ihre Blobs innerhalb des angegebenen Containers zu lokalisieren. Innerhalb des Pfads können Sie eine oder mehrere Instanzen der Variablen {date} und {time} angeben. Beispiel 1: products/{date}/{time}/product-list.csv Beispiel 2: produkte/{date}/product-list.csv Beispiel 3: product-list.csv Wenn das Blob nicht im angegebenen Pfad vorhanden ist, wartet der Stream Analytics-Auftrag auf unbestimmte Zeit, bis das Blob verfügbar ist. |
| Datumsformat [optional] | Wenn Sie {date} innerhalb des angegebenen Pfadmusters verwendet haben, wählen Sie das Datumsformat aus, in dem Ihre Blobs aus der Dropdownliste der unterstützten Formate organisiert sind. Beispiel: JJJJ/MM/TT oder MM/TT/JJJJ |
| Zeitformat [optional] | Wenn Sie {time} innerhalb des angegebenen Pfadmusters verwendet haben, wählen Sie das Zeitformat aus, in dem Ihre Blobs aus der Dropdownliste der unterstützten Formate organisiert sind. Beispiel: HH, HH/mm oder HH-mm |
| Ereignis-Serialisierungsformat | Um sicherzustellen, dass Ihre Abfragen wie erwartet funktionieren, muss Stream Analytics wissen, welches Serialisierungsformat Sie für eingehende Datenströme verwenden. Für Referenzdaten sind die unterstützten Formate CSV und JSON. |
| Codierung | UTF-8 ist derzeit das einzige unterstützte Codierungsformat. |
Statische Referenzdaten
Ihre Referenzdaten werden möglicherweise nicht geändert. Um die Unterstützung für statische Referenzdaten zu aktivieren, geben Sie einen statischen Pfad in der Eingabekonfiguration an.
Stream Analytics erfasst das Blob aus dem angegebenen Pfad. Die {date}- und {time}-Ersetzungstoken sind nicht erforderlich. Da Referenzdaten in Stream Analytics unveränderlich sind, wird das Überschreiben eines blobs für statische Referenzdaten nicht empfohlen.
Generieren von Referenzdaten in einem Zeitplan
Ihre Referenzdaten können ein langsam ändernder Datensatz sein. Um Referenzdaten zu aktualisieren, geben Sie ein Pfadmuster in der Eingabekonfiguration mithilfe der {date}- und {time}-Ersetzungstoken an. Stream Analytics erfasst die aktualisierten Referenzdatendefinitionen basierend auf diesem Pfadmuster.
Beispielsweise weist ein Muster mit einem Datumsformat sample/{date}/{time}/products.csv von JJJJ-MM-DD und einem Zeitformat von HH-mm Stream Analytics an, das aktualisierte Blob sample/2015-04-16/17-30/products.csv am 16. April 2015 um 15:30 Uhr UTC aufzunehmen.
Stream Analytics sucht automatisch nach aktualisierten Referenzdaten-Blobs in einem Minutenintervall. Ein Blob mit dem Zeitstempel 10:30:00 kann mit einer kleinen Verzögerung hochgeladen werden, z. B. 10:30:30. Sie bemerken eine kleine Verzögerung im Stream Analytics-Auftrag, der auf dieses Blob verweist.
Um solche Szenarien zu vermeiden, laden Sie das BLOB vor der vorgesehenen Uhrzeit hoch, was in diesem Beispiel 10:30:00 ist. Der Stream Analytics-Auftrag hat jetzt genügend Zeit, das Blob im Speicher zu erkennen und zu laden, und Vorgänge auszuführen.
Hinweis
Derzeit suchen Stream Analytics-Aufträge nur dann nach der Blob-Aktualisierung, wenn die Computerzeit zu der im Blobnamen kodierten Zeit wechselt. Beispielsweise sucht die Aufgabe sample/2015-04-16/17-30/products.csv so bald wie möglich, aber nicht vor dem 16. April 2015 um 17:30 Uhr UTC. Es wird nie nach einem Blob mit einer codierten Zeit suchen, die früher ist als die des zuletzt entdeckten Blobs.
Wenn der Auftrag beispielsweise den Blob sample/2015-04-16/17-30/products.csvfindet, ignoriert er alle Dateien mit einem codierten Datum vor dem 16. April 2015 um 15:30 Uhr. Wenn ein verspätetes sample/2015-04-16/17-25/products.csv Blob im selben Container erstellt wird, wird das Job es nicht verwenden.
In einem anderen Beispiel sample/2015-04-16/17-30/products.csv wird nur am 16. April 2015 um 10:03 Uhr erstellt, aber im Container ist kein Blob mit einem früheren Datum vorhanden. Anschließend verwendet der Auftrag diese Datei ab dem 16. April 2015 um 10:03 Uhr und verwendet die vorherigen Referenzdaten bis dahin.
Eine Ausnahme von diesem Verhalten tritt auf, wenn der Auftrag Daten in der Vergangenheit verarbeiten muss oder wenn der Auftrag zum ersten Mal gestartet wird.
Beim Start sucht der Auftrag nach dem zuletzt erstellten Blob, der vor der angegebenen Auftragsanfangszeit erstellt wurde. Dieses Verhalten stellt sicher, dass beim Starten des Auftrags ein nicht leeres Referenzdatenset vorhanden ist. Wenn eine nicht gefunden werden kann, zeigt der Auftrag die folgende Diagnose an: Initializing input without a valid reference data blob for UTC time <start time>
Wenn ein Referenz-Dataset aktualisiert wird, wird ein Diagnoseprotokoll generiert: Loaded new reference data from <blob path>. Aus vielen Gründen muss ein Auftrag möglicherweise ein vorheriges Referenzdatenset neu laden. Meistens besteht der Grund darin, vergangene Daten erneut zu verarbeiten. Dasselbe Diagnoseprotokoll wird zu diesem Zeitpunkt generiert. Diese Aktion impliziert nicht, dass aktuelle Datenstromdaten vergangene Referenzdaten verwenden.
Azure Data Factory kann verwendet werden, um die Aufgabe zu koordinieren, die aktualisierten Blobs zu erstellen, die von Stream Analytics zum Aktualisieren von Referenzdatendefinitionen erforderlich sind.
Data Factory ist ein cloudbasierter Datenintegrationsdienst, der die Bewegung und Transformation von Daten koordiniert und automatisiert. Data Factory unterstützt die Verbindung mit einer großen Anzahl von cloudbasierten und lokalen Datenspeichern. Es kann Daten problemlos in einem von Ihnen angegebenen regulären Zeitplan verschieben.
Weitere Informationen zum Einrichten einer Data Factory-Pipeline zum Generieren von Referenzdaten für Stream Analytics, die in einem vordefinierten Zeitplan aktualisiert werden, finden Sie in diesem GitHub-Beispiel.
Tipps zum Aktualisieren von BLOB-Referenzdaten
- Überschreiben Sie keine Referenzdatenblobs, da sie unveränderlich sind.
- Die empfohlene Methode zum Aktualisieren von Referenzdaten ist:
- Verwenden Sie {date}/{time} im Pfadmuster.
- Fügen Sie ein neues Blob hinzu, indem Sie dasselbe Container- und Pfadmuster verwenden, das in der Auftragseingabe definiert ist.
- Verwenden Sie ein Datum/eine Uhrzeit , die größer als die durch das letzte Blob in der Sequenz angegebene ist.
- Referenzdatenblobs werden nicht* nach dem Zeitpunkt der letzten Änderung des Blobs sortiert. Sie werden nur nach dem Datum und der Uhrzeit sortiert, das im Blobnamen angegeben ist, wobei die Ersetzungen {date} und {time} verwendet werden.
- Um zu vermeiden, dass eine große Anzahl von Blobs aufgeführt werden muss, löschen Sie alte Blobs, für die die Verarbeitung nicht mehr durchgeführt wird. Stream Analytics muss in einigen Szenarien möglicherweise einen kleinen Teil erneut verarbeiten, z. B. einen Neustart.
Azure SQL-Datenbank
Ihr Stream Analytics-Auftrag ruft SQL-Datenbankreferenzdaten ab und speichert sie als Momentaufnahme im Arbeitsspeicher für die Verarbeitung. Die Momentaufnahme Ihrer Referenzdaten wird auch in einem Container in einem Speicherkonto gespeichert. Sie geben das Speicherkonto in den Konfigurationseinstellungen an.
Der Container wird automatisch erstellt, wenn der Auftrag gestartet wird. Wenn der Auftrag beendet oder in einen fehlerhaften Zustand wechselt, werden die automatisch erstellten Container gelöscht, wenn der Auftrag neu gestartet wird.
Wenn Ihre Referenzdaten ein sich langsam ändernder Datensatz sind, muss die in Ihrem Job verwendete Momentaufnahme regelmäßig aktualisiert werden.
Mit Stream Analytics können Sie beim Konfigurieren der SQL-Datenbankeingabeverbindung eine Aktualisierungsrate festlegen. Die Stream Analytics-Laufzeit fragt Ihre SQL-Datenbankinstanz im durch die Aktualisierungsrate angegebenen Intervall ab. Die schnellste Aktualisierungsrate wird einmal pro Minute unterstützt. Für jede Aktualisierung speichert Stream Analytics eine neue Momentaufnahme im bereitgestellten Speicherkonto.
Stream Analytics bietet zwei Optionen zum Abfragen Ihrer SQL-Datenbankinstanz. Eine Momentaufnahmeabfrage ist obligatorisch und muss in jedem Auftrag enthalten sein. Stream Analytics führt die Momentaufnahmeabfrage regelmäßig basierend auf Ihrem Aktualisierungsintervall aus. Es verwendet das Ergebnis der Abfrage (der Momentaufnahme) als Referenz-Dataset.
Die Momentaufnahmeabfrage sollte den meisten Szenarien entsprechen. Wenn Leistungsprobleme mit großen Datasets und schnellen Aktualisierungsraten auftreten, verwenden Sie die Delta-Abfrageoption. Abfragen, die mehr als 60 Sekunden dauern, um ein Referenzdatenset zurückzugeben, führen zu einem Timeout.
Mit der Delta-Abfrageoption führt Stream Analytics die Momentaufnahmeabfrage zunächst aus, um ein Basisreferenz-Dataset abzurufen. Anschließend führt Stream Analytics die Delta-Abfrage regelmäßig basierend auf Ihrem Aktualisierungsintervall aus, um inkrementelle Änderungen abzurufen. Diese inkrementellen Änderungen werden kontinuierlich auf das Referenzdatenset angewendet, um sie auf dem neuesten Stand zu halten. Die Verwendung der Delta-Abfrageoption kann dazu beitragen, die Speicherkosten und Netzwerk-E/A-Vorgänge zu reduzieren.
Konfigurieren von SQL-Datenbankreferenzdaten
Um Ihre SQL-Datenbankreferenzdaten zu konfigurieren, müssen Sie zuerst Referenzdateneingaben erstellen. In der folgenden Tabelle werden die eigenschaften erläutert, die Sie angeben müssen, wenn Sie die Referenzdateneingabe mit ihrer Beschreibung erstellen. Weitere Informationen finden Sie unter Verwenden von Referenzdaten aus einer SQL-Datenbank für einen Stream Analytics-Auftrag.
Sie können azure SQL Managed Instance als Referenzdateneingabe verwenden. Sie müssen einen öffentlichen Endpunkt in sql Managed Instance konfigurieren. Anschließend konfigurieren Sie die folgenden Einstellungen in Stream Analytics manuell. Ein virtueller Azure-Computer, auf dem SQL Server mit einer angefügten Datenbank ausgeführt wird, wird auch durch manuelles Konfigurieren dieser Einstellungen unterstützt.
| Eigenschaftsname | Description |
|---|---|
| Eingabealias | Ein freundlicher Name, der in der Auftragsabfrage verwendet wird, um auf diese Eingabe zu verweisen. |
| Subscription | Ihr Abonnement |
| Datenbank | Die SQL-Datenbankinstanz, die Ihre Referenzdaten enthält. Für die verwaltete SQL-Instanz müssen Sie den Port 3342 angeben. Beispiel ist sampleserver.public.database.windows.net,3342. |
| Nutzername | Der Benutzername, der Ihrer SQL-Datenbankinstanz zugeordnet ist. |
| Kennwort | Das Kennwort, das Ihrer SQL-Datenbankinstanz zugeordnet ist. |
| Regelmäßig aktualisieren | Mit dieser Option können Sie eine Aktualisierungsrate auswählen. Wählen Sie "Ein" aus, um die Aktualisierungsrate in DD:HH:MM anzugeben. |
| Snapshot-Abfrage | Diese Standardabfrageoption ruft die Referenzdaten aus Ihrer SQL-Datenbankinstanz ab. |
| Delta-Abfrage | Fügen Sie für erweiterte Szenarien mit großen Datasets und einer kurzen Aktualisierungsrate eine Delta-Abfrage hinzu. |
Größenbeschränkung
Verwenden Sie Referenzdatensätze, die weniger als 300 MB sind, um eine optimale Leistung zu erzielen. Referenzdatensätze mit 5 GB oder niedriger werden in Aufträgen mit sechs Streamingeinheiten oder mehr unterstützt. Die Verwendung eines großen Referenzdatensatzes wirkt sich möglicherweise auf die End-to-End-Latenz Ihres Auftrags aus.
Die Abfragekomplexität kann erhöht werden, um zustandsbehaftete Verarbeitung wie fensterierte Aggregate, zeitliche Verknüpfungen und zeitliche Analysefunktionen einzuschließen. Wenn die Komplexität zunimmt, verringert sich die maximale unterstützte Größe von Referenzdaten.
Wenn Stream Analytics die Referenzdaten nicht laden und komplexe Vorgänge ausführen kann, gerät der Job in Speicherprobleme und schlägt fehl. In solchen Fällen erreicht die Prozentauslastung der Streamingeinheit 100%.
| Anzahl der Streamingeinheiten | Empfohlene Größe |
|---|---|
| 1 | 50 MB oder niedriger |
| 3 | 150 MB oder niedriger |
| 6 und darüber hinaus | 5 GB oder niedriger |
Unterstützung für Komprimierung steht für Referenzdaten nicht zur Verfügung. Verwenden Sie für Referenzdatensets, die größer als 300 MB sind, SQL-Datenbank als Quelle mit der Delta-Abfrageoption , um eine optimale Leistung zu erzielen. Wenn die Delta-Abfrageoption in solchen Szenarien nicht verwendet wird, werden Spitzen in der Wasserzeichenverzögerungsmetrik jedes Mal angezeigt, wenn das Referenz-Dataset aktualisiert wird.
Verbinden mehrerer Referenz-Datasets in einem Auftrag
Sie können nur eine Referenzdateneingabe mit einer Streamingeingabe verknüpfen. Wenn Sie also mehrere Referenzdatensätze verbinden möchten, unterteilen Sie Ihre Abfrage in mehrere Schritte. Ein Beispiel:
With Step1 as (
--JOIN input stream with reference data to get 'Desc'
SELECT streamInput.*, refData1.Desc as Desc
FROM streamInput
JOIN refData1 ON refData1.key = streamInput.key
)
--Now Join Step1 with second reference data
SELECT *
INTO output
FROM Step1
JOIN refData2 ON refData2.Desc = Step1.Desc
IoT Edge-Aufträge
Nur lokale Referenzdaten werden für Stream Analytics-Edgeaufträge unterstützt. Wenn ein Auftrag auf einem IoT-Edge-Gerät bereitgestellt wird, lädt er die Referenzdaten aus dem benutzerdefinierten Dateipfad. Lassen Sie eine Referenzdatendatei auf dem Gerät bereit.
Legen Sie die Referenzdatendatei für einen Windows-Container auf dem lokalen Laufwerk ab und geben Sie das lokale Laufwerk für den Docker-Container frei. Erstellen Sie für einen Linux-Container ein Docker-Volume, und füllen Sie die Datendatei auf dem Volume auf.
Referenzdaten für ein IoT Edge-Update werden durch eine Bereitstellung ausgelöst. Nach dem Auslösen wählt das Stream Analytics-Modul die aktualisierten Daten aus, ohne den ausgeführten Auftrag zu beenden.
Sie können die Referenzdaten auf zwei Arten aktualisieren:
- Aktualisieren Sie den Referenzdatenpfad in Ihrem Stream Analytics-Auftrag aus dem Azure-Portal.
- Aktualisieren Sie die IoT Edge-Bereitstellung.