Connessione dati all'hub IoT

hub IoT di Azure è un servizio gestito, ospitato nel cloud, che funge da hub messaggi centrale per la comunicazione bidirezionale tra l'applicazione IoT e i dispositivi gestiti. Azure Esplora dati offre l'inserimento continuo da hub IoT gestite dal cliente, usando il relativo hub eventi compatibile con l'endpoint predefinito dei messaggi da dispositivo a cloud.

La pipeline di inserimento IoT esegue diversi passaggi. Prima di tutto, crei un hub IoT e registri un dispositivo. Si crea quindi una tabella di destinazione in Azure Esplora dati in cui i dati in un formato specifico verranno inseriti usando le proprietà di inserimento indicate. La connessione dell'hub Iot deve conoscere il routing degli eventi per connettersi alla tabella Esplora dati di Azure. I dati vengono incorporati con proprietà selezionate in base al mapping delle proprietà del sistema per gli eventi. Questo processo può essere gestito tramite il portale di Azure, a livello di codice con C# o Python oppure con il modello di Azure Resource Manager.

Per informazioni generali sull'inserimento dati in Azure Esplora dati, vedere Panoramica dell'inserimento di dati in Azure Esplora dati.

Formato dati

Proprietà di inserimento

Le proprietà di inserimento indicano al processo di inserimento dove instradare i dati e come elaborarli. È possibile specificare le proprietà di inserimento degli eventi usando EventData.Properties. È possibile impostare le proprietà seguenti:

Proprietà Descrizione
Database Nome (con distinzione tra maiuscole e minuscole) del database di destinazione. Questa proprietà può essere utilizzata se si desidera inviare i dati a un database diverso rispetto al database in cui è stata creata la connessione dati (database predefinito). Per indirizzare i dati a più database, è prima necessario configurare la connessione come connessione multi-database. Per altre informazioni, vedere Routing degli eventi.
Tabella Nome (con distinzione tra maiuscole e minuscole) della tabella di destinazione esistente. Esegue l'override del set Table nel riquadro Data Connection.
Formato Formato dati. Esegue l'override del set Data format nel riquadro Data Connection.
IngestionMappingReference Nome del mapping di inserimento esistente da usare. Esegue l'override del set Column mapping nel riquadro Data Connection.
Codifica Codifica dei dati, l'impostazione predefinita è UTF8. Può essere una delle codifiche supportate da .NET.

Nota

Vengono inseriti solo gli eventi accodati dopo aver creato la connessione dati.

Routing degli eventi

Quando si crea una connessione dati al cluster, si specifica il routing per dove inviare i dati inseriti. Il routing predefinito è la tabella di destinazione specificata nella stringa di connessione associata al database di destinazione. Il routing predefinito per i dati viene definito anche routing statico. È possibile specificare un routing alternativo per i dati usando le proprietà dei dati dell'evento.

Instradare i dati degli eventi a un database alternativo

Il routing dei dati a un database alternativo è disattivato per impostazione predefinita. Per inviare i dati a un database diverso, è prima necessario impostare la connessione come connessione multi-database. Per un esempio di come eseguire questa operazione nella portale di Azure, vedere Attivare il routing multi-database. L'utente, il gruppo, l'entità servizio o l'identità gestita usata per consentire il routing del database deve avere almeno il ruolo collaboratore e le autorizzazioni di scrittura nel cluster.

Per specificare un database alternativo, impostare la proprietà Inserimento database.

Avviso

Se si specifica un database alternativo senza impostare la connessione come connessione dati multi-database, l'inserimento avrà esito negativo.

Attivare il routing multi-database

Prima di poter impostare un database di destinazione alternativo, è necessario consentire il routing dei dati a più database. Usare la procedura seguente per consentire il routing dei dati a database alternativi:

  1. Nel portale di Azure passare al cluster.

  2. Selezionare Connessioni dati database>.

  3. Creare o modificare una connessione dati e nel riquadro Connessione dati, in Impostazioni routing dati, attivare l'opzione Consenti il routing dei dati ad altri database (connessione dati multi-database).

    Screenshot di Azure Esplora dati Web U I che mostra l'opzione Impostazioni routing dati impostata per consentire.

Instradare i dati degli eventi a una tabella alternativa

È anche possibile specificare le proprietà della tabella di destinazione per ogni evento usando le proprietà dell'evento. La connessione indirizza dinamicamente i dati come specificato in EventData.Properties, ignorando le proprietà statiche per questo evento. Per specificare una tabella alternativa, impostare la proprietà Inserimento tabella.

Nota

Se i dati personali includono le informazioni di routing selezionate, è necessario fornire le informazioni di routing necessarie come parte delle proprietà degli eventi.

Mapping delle proprietà del sistema per gli eventi

Le proprietà di sistema sono una raccolta usata per archiviare le proprietà impostate dal servizio hub IoT, al momento della ricezione dell'evento. La connessione di Azure Esplora dati hub IoT incorporerà le proprietà selezionate nella destinazione dei dati nella tabella.

Nota

Per csv il mapping, le proprietà vengono aggiunte all'inizio del record nell'ordine elencato nella tabella seguente. Per json il mapping, le proprietà vengono aggiunte in base ai nomi delle proprietà nella tabella seguente.

Proprietà di sistema

hub IoT espone le proprietà di sistema seguenti per i messaggi hub IoT da dispositivo a cloud:

Proprietà Descrizione
message-id Un identificatore configurabile dall'utente per il messaggio, usato per i modelli di richiesta-risposta. Formato: stringa con distinzione tra maiuscole e minuscole (con lunghezza massima di 128 caratteri) di caratteri alfanumerici ASCII a 7 bit + {'-', ':', '.', '+', '%', '_', '#', '*', '?', '!', '(', ')', ',', '=', '@', ';', '$', '''}.
iothub-enqueuedtime Data e ora di ricezione del messaggio da dispositivo a cloud da parte dell'hub IoT.
user-id ID usato per specificare l'origine dei messaggi. Quando i messaggi vengono generati da hub IoT, questo valore viene impostato su {iot hub name}.
iothub-connection-device-id ID impostato dall'hub IoT sui messaggi da dispositivo a cloud. Contiene il valore deviceId del dispositivo che ha inviato il messaggio.
iothub-connection-module-id ID impostato dall'hub IoT sui messaggi da dispositivo a cloud. Contiene il valore moduleId del dispositivo che ha inviato il messaggio.
iothub-connection-auth-generation-id ID impostato dall'hub IoT sui messaggi da dispositivo a cloud. Contiene il valore connectionDeviceGenerationId (come indicato in Proprietà delle identità dei dispositivi) del dispositivo che ha inviato il messaggio.
iothub-connection-auth-method Metodo di autenticazione impostato dall'hub IoT sui messaggi da dispositivo a cloud. Questa proprietà contiene informazioni sul metodo di autenticazione usato per autenticare il dispositivo che invia il messaggio.
iothub-app-iothub-creation-time-utc Consente al dispositivo di inviare l'ora di creazione dell'evento quando si inviano i dati in batch.
iothub-creation-time-utc Consente al dispositivo di inviare l'ora di creazione dell'evento quando si invia un messaggio alla volta.
dt-dataschema Questo valore viene impostato dall'hub IoT nei messaggi da dispositivo a cloud. Contiene l'ID modello di dispositivo impostato nella connessione del dispositivo.
dt-subject Nome del componente che invia i messaggi da dispositivo a cloud.

Se si seleziona Proprietà del sistema per gli eventi nella sezione Origine dati della tabella, è necessario includere le proprietà del sistema nello schema e nel mapping della tabella.

Esempi di mapping dello schema

Esempio di mapping dello schema di tabella

Se i dati includono tre colonne (Timespan, Metrice Value) e le proprietà incluse sono iothub-connection-device-id e sequence-number, creare o modificare lo schema della tabella usando questo comando:

    .create-merge table TestTable (TimeStamp: datetime, Metric: string, Value: int, IotHubDeviceId:long, IotHubSequenceNumber:long)

Esempio di mapping CSV

Eseguire i comandi seguenti per aggiungere dati all'inizio del record. Prendere nota dei valori ordinali.

    .create table TestTable ingestion csv mapping "CsvMapping1"
    '['
    '   { "column" : "TimeStamp", "Properties":{"Ordinal":"2"}},'
    '   { "column" : "Metric", "Properties":{"Ordinal":"3"}},'
    '   { "column" : "Value", "Properties":{"Ordinal":"4"}},'
    '   { "column" : "IotHubDeviceId", "Properties":{"Ordinal":"0"}},'
    '   { "column" : "IotHubSequenceNumber", "Properties":{"Ordinal":"1"}}'
    ']'

Esempio di mapping JSON

I dati verranno aggiunti usando il mapping delle proprietà di sistema. Eseguire i comandi seguenti:

    .create table TestTable ingestion json mapping "JsonMapping1"
    '['
    '    { "column" : "TimeStamp", "Properties":{"Path":"$.timestamp"}},'
    '    { "column" : "Metric", "Properties":{"Path":"$.metric"}},'
    '    { "column" : "Value", "Properties":{"Path":"$.metric_value"}},'
    '    { "column" : "IotHubDeviceId", "Properties":{"Path":"$.iothub-connection-device-id"}},'
    '    { "column" : "IotHubSequenceNumber", "Properties":{"Path":"$.sequence-number"}}'
    ']'

Mapping delle proprietà utente dell'evento

Non è disponibile alcun supporto per arricchire il payload degli eventi hub IoT con le proprietà utente. Prendere in considerazione l'incorporamento delle proprietà utente nel corpo dell'evento upstream.

Connessione dell'hub IoT

Nota

Per ottenere prestazioni ottimali, creare tutte le risorse nella stessa area del cluster di Azure Esplora dati.

Creare un hub IoT

Se non è già disponibile, creare un hub Iot. La connessione a hub IoT può essere gestita tramite il portale di Azure, a livello di codice con C# o Python o con il modello di Azure Resource Manager.

Nota

  • Il device-to-cloud partitions conteggio non è modificabile, pertanto è consigliabile prendere in considerazione la scalabilità a lungo termine quando si imposta il numero di partizioni.
  • Il gruppo di consumer deve essere univoco per ogni consumer. Creare un gruppo di consumer dedicato alla connessione Esplora dati di Azure. Trovare la risorsa nella portale di Azure e passare per Built-in endpoints aggiungere un nuovo gruppo di consumer.
  • La connessione dati usa hub IoT Built-in endpoint. Se si configura un altro Message routing endpointoggetto , i messaggi si arrestano verso l'oggetto Built-in endpoint a meno che non venga creata una route a tale endpoint. Per garantire che i messaggi continuino a essere trasmessi all'endpoint predefinito se viene aggiunta una nuova route, configurare una route all'endpoint events . Per altre informazioni, vedere hub IoT Risoluzione dei problemi relativi al routing dei messaggi.

Invio di eventi

Vedere il progetto di esempio che simula un dispositivo e genera i dati.

Passaggio successivo