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 gestiti 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, si crea un hub IoT e si registra 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 hub Iot deve conoscere il routing degli eventi per connettersi alla tabella di Esplora dati di Azure. I dati vengono incorporati con le proprietà selezionate in base al mapping delle proprietà del sistema eventi. Questo processo può essere gestito tramite il portale di Azure, a livello di codice con C# o Python o con il modello di Resource Manager di Azure.

Per informazioni generali sull'inserimento dati in Azure Esplora dati, vedere Panoramica dell'inserimento dei 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 elaborarlo. È possibile specificare le proprietà di inserimento degli eventi usando EventData.Properties. È possibile inoltre 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 da quello 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 Table set nel Data Connection riquadro.
Formato Formato dati. Esegue l'override del Data format set nel Data Connection riquadro.
IngestionMappingReference Nome del mapping di inserimento esistente da usare. Esegue l'override del Column mapping set nel Data Connection riquadro.
Codifica La 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 il percorso in cui inviare i dati inseriti. Il routing predefinito è la tabella di destinazione specificata nel stringa di connessione associato 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, è necessario innanzitutto impostare la connessione come connessione multi-database. Per un esempio di come eseguire questa operazione nel 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à Inserimentodatabase.

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 prima consentire il routing dei dati a più database. Per consentire il routing dei dati a database alternativi, seguire questa procedura:

  1. Nel portale di Azure passare al cluster.

  2. Selezionare Connessionidatidatabase>.

  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 di routing dei 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 instrada dinamicamente i dati come specificato in EventData.Properties, ignorando le proprietà statiche per questo evento. Per specificare una tabella alternativa, impostare la proprietà Di inserimentotabella.

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 utilizzata per archiviare le proprietà impostate dal servizio hub IoT, al momento della ricezione dell'evento. La connessione di Azure Esplora dati hub IoT incorporare le proprietà selezionate nell'area di 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 da dispositivo a cloud hub IoT:

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 il tempo di creazione dell'evento durante l'invio di dati in un 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 nella sezione Origine dati della tabella sono state selezionate le proprietà del sistema eventi, è necessario includere le proprietà nello schema della tabella e nel mapping.

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 questi comandi:

    .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à dell'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 Resource Manager di Azure.

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 nel portale di Azure e passare a Built-in endpoints per aggiungere un nuovo gruppo di consumer.
  • La connessione dati usa hub IoT Built-in endpoint. Se si configurano altri Message routing endpointmessaggi , i messaggi vengono arrestati fino a Built-in endpoint quando non viene 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