Questo esempio viene utilizzato come demo in una sessione INT105 – Crea pipeline di dati con SAP Data Intelligence al SAP TechEd 2020. Sei più che benvenuto a partecipare a questa sessione e a guardare quella demo. Ma non è un prerequisito, se vuoi continuare con questo post.
Nel post precedente abbiamo iniziato a creare una pipeline di dati in SAP Data Intelligence per ingestire dati da un endpoint API e da trasformare i dati dal formato codificato TLE in un payload JSON leggibile. Ora è il momento di caricare questi dati e per questo utilizzeremo SAP HANA, edizione express.
Ok, continuiamo il nostro viaggio...
Aggiungi la configurazione della connessione SAP HANA
Andiamo all'applicazione Connection Management in SAP Data Intelligence.
Nel default
tenant di un'istanza di prova è possibile una connessione HANA_LOCALHOST
tra gli altri. Potrebbe essere una buona opzione con cui giocare se desideri leggere/scrivere dati da SAP HANA da all'interno Istanza di prova di Data Intelligence. Ma nel nostro caso voglio poter accedere ai dati in SAP HANA db anche da altri client esterni.
Creiamo un'altra connessione. Come ho già detto, sarà un'istanza ospitata nel cloud di SAP HANA, edizione express. Lo chiamerò MyHXE_HXE_SYSTEM
.
Potresti vedere che sto trasformando Use TLS
opzione attiva. È meglio prevenire che curare.
Verifica connessione ha avuto successo, quindi fammi Creare questa configurazione.
Controlla gli oggetti in Esplora metadati
Ora che la connessione è stata creata, controlliamola nell'applicazione Metadata Explorer. Se non hai familiarità con Metadata Explorer, ti consiglio di controllare prima i tutorial:
- Utilizza, scopri e profila i dati con SAP Data Intelligence, versione di prova
Nell'applicazione vai su Catalogo> Sfoglia connessioni...
… e poi alla nostra connessione (nel mio caso è MyHXE_HXE_SYSTEM
) e al SYSTEM
schema. Nel mio sistema è vuoto per il momento.
Aggiungi l'operatore SAP HANA alla pipeline di dati
Tornando all'applicazione Modeler e al nostro grafico creato nel post precedente, aggiungiamo un operatore SAP HANA Client alla pipeline di dati.
Collega il out
dell'ultima intercettazione porta ai data
del Cliente HANA porta.
Configuriamo l'operatore definendo i seguenti parametri:
- Nome:
ISS locs to SAP HANA
- Connessione:
MyHXE_HXE_SYSTEM
da Gestione connessioni - Nome tabella:
"ISS_TRACK"
- Colonne della tabella:
[{"name":"TSTMP","type":"SECONDDATE"},{"name":"LAT","type":"DOUBLE"},{"name":"LON","type":"DOUBLE"},{"name":"ALT","type":"INTEGER"}]
- Formato di input:JSON
- Modalità di inserimento:INSERTO
- Inizializzazione tabella:Crea
- Uscita decimale:virgola mobile
- Termina in caso di errore:Falso
La configurazione JSON delle colonne della tabella dovrebbe consentirci di vedere una bella visualizzazione del modulo, una volta aperta nell'anteprima Dettagli tabella.
Una volta completata questa configurazione aggiuntiva, è il momento di salvare ed eseguire il grafico.
E una volta che è in esecuzione...
Controlla il ISS_TRACK
oggetto in Esplora metadati
Torna a Esplora metadati. Se necessario, aggiorna lo schermo per vedere le modifiche nel SYSTEM
schema di MyHXE_HXE_SYSTEM
connessione.
Dovresti vedere ISS_TRACK
oggetto del tipo “Tabella”.
Vai alla scheda informativa di questo oggetto e passa alla visualizzazione Anteprima dati. Dovresti vedere i dati inseriti dal grafico in esecuzione.
Lascia che il grafico venga eseguito per almeno 10 minuti per raccogliere alcuni dati.
Esplorazione dei dati in SAP HANA
Dopo aver raccolto almeno 10 minuti di dati, possiamo interrompere l'esecuzione del grafico e passare all'esplorazione dei dati in SAP HANA.
Se hai seguito i miei post precedenti, allora sai che grazie a Mathias Kemeter mi piace usare DBeaver database manager grazie alla sua bella visualizzazione integrata dei dati spaziali.
Diamo un'occhiata al percorso fatto dalla ISS mentre stavo eseguendo un grafico che raccoglieva i dati.
SELECT UTCTOLOCAL("TSTMP") AS "TSTMP", "LON", "LAT", "ALT",
SECONDS_BETWEEN (UTCTOLOCAL("TSTMP"), NOW()) AS "Sec_Ago",
NEW ST_POINT('Point Z('||"LON"||' '||"LAT"||' '||"ALT"||')',4326) AS "Loc3D"
FROM "ISS_TRACK";
Calcoliamo la "velocità al suolo" del satellite, come se si muovesse sulla superficie terrestre, all'ultimo timestamp registrato.
SELECT TOP 1
UTCTOLOCAL ("TSTMP", 'CET') as TIMECET,
ROUND(IFNULL(NEW ST_Point('POINT ('||"LON"||' '||"LAT"||')', 4326).ST_Distance
(NEW ST_Point('POINT ('||LAG("LON", 1, "LON") OVER (ORDER BY "TSTMP")||' '||LAG("LAT", 1, "LAT") OVER (ORDER BY "TSTMP")||')', 4326), 'kilometer')/
SECONDS_BETWEEN (LAG("TSTMP", 1) OVER (ORDER BY "TSTMP"),"TSTMP"), 0), 2) AS "KMpS"
FROM
(SELECT TOP 2
UTCTOLOCAL("TSTMP") AS "TSTMP", "LON", "LAT", "ALT",
SECONDS_BETWEEN (UTCTOLOCAL("TSTMP"), NOW()) AS "Sec_Ago",
NEW ST_POINT('Point Z('||"LON"||' '||"LAT"||' '||"ALT"||')',4326) AS "Loc3D"
FROM "SYSTEM"."ISS_TRACK"
ORDER BY "TSTMP" DESC)
ORDER BY "TSTMP" DESC
6,33 chilometri al secondo. Senza prendere una multa per eccesso di velocità!