Integrazione AWS - Recuperare tutte le tabelle Tulip nella funzione Lambda
  • 27 May 2024
  • 2 Minuti da leggere
  • Contributori

Integrazione AWS - Recuperare tutte le tabelle Tulip nella funzione Lambda


Sommario dell'articolo

Semplificare il reperimento dei dati da Tulip ad AWS per maggiori opportunità di analisi e integrazione.

Scopo

Questa guida spiega passo per passo come recuperare tutti i dati delle tabelle Tulip su AWS tramite una funzione Lambda.

Questo va oltre la query fetch di base e itera tutte le tabelle in una data istanza; questo può essere ottimo per un lavoro ETL settimanale (Extract, Transform, Load).

La funzione lambda può essere attivata tramite una serie di risorse, come i timer di Event Bridge o un gateway API.

Di seguito è riportato un esempio di architettura:image

Configurazione

Questo esempio di integrazione richiede quanto segue:

  • Uso dell'API Tulip Tables (ottenere la chiave e il segreto dell'API nelle impostazioni dell'account).
  • Tabella Tulip (ottenere l'ID univoco della tabella)

Passi di alto livello: 1. Creare una funzione AWS Lambda con il trigger pertinente (API Gateway, Event Bridge Timer, ecc.) 2. Recuperare i dati della tabella Tulip con i dati di Tulip Tables. Recuperare i dati della tabella Tulip con l'esempio seguente ```python import json import pandas as pd import requests from sqlalchemy import create_engine import os

def lambda_handler(event, context): # inizializza il db host = os.getenv('host') user = os.getenv('username') password = os.getenv('password') db = os.getenv('database')

engine_str = f'postgresql://{user}:{password}@{host}/{db}' engine = create_engine(engine_str) api_header = {'Authorization' : os.getenv('tulip_api_basic_auth')} instance = os.getenv('tulip_instance') base_url = f'https://{instance}.tulip.co/api/v3' get_tables_function = '/tables' r = requests.get(base_url+get_tables_function, headers=api_header) df = pd.DataFrame(r.json()) # Funzione per convertire i dizionari in stringhe def dict_to_str(cell): if isinstance(cell, dict): return str(cell) return cell # Funzione di interrogazione della tabella def query_table(table_id, base_url, api_header): offset = 0 function = f'/tables/{table_id}/records?limit=100&offset={offset}&includeTotalCount=false&filterAggregator=all' r = requests.get(base_url+funzione, headers=api_header) df = pd.DataFrame(r.json()) length = len(r.json()) while length > 0: offset += 100 function = f'/tables/{table_id}/records?limit=100&offset={offset}&includeTotalCount=false&filterAggregator=all' r = requests.get(base_url+function, headers=api_header) length = len(r.json()) df_append = pd.DataFrame(r.json()) df = pd.concat([df, df_append], axis=0) df = df.apply(lambda row: row.apply(dict_to_str), axis=1) return df # create function def write_to_db(row, base_url, api_header): table = row['label'] id = row['id'] df = query_table(id, base_url, api_header) df.to_sql(table,engine, if_exists='replace', index=False) print(f'wrote {table} to database!') # iterate through all tables: df.apply(lambda row: write_to_db(row, base_url, api_header), axis=1) return { 'statusCode': 200, 'body': json.dumps('wrote to db!')}


## Casi d'uso e passi successivi


Una volta finalizzata l'integrazione con lambda, è possibile analizzare facilmente i dati con un notebook sagemaker, QuickSight o una serie di altri strumenti.


**1. Previsione dei difetti**- Individuare i difetti di produzione prima che si verifichino e aumentare la qualità al primo colpo - Identificare i principali fattori di produzione della qualità per implementare miglioramenti.


**2. Ottimizzazione dei costi della qualità**- Identificare le opportunità di ottimizzare la progettazione del prodotto senza incidere sulla soddisfazione del cliente.


**3. Ottimizzazione dell'energia di produzione**- Identificare le leve di produzione per ottimizzare il consumo energetico.


**4. Previsione e ottimizzazione delle consegne e della pianificazione**- Ottimizzare il programma di produzione in base alla domanda dei clienti e al calendario degli ordini in tempo reale.


**5. Benchmarking globale di macchine e linee**- Benchmarking di macchine o attrezzature simili con normalizzazione.


**6. Gestione delle prestazioni digitali globali/regionali**- Dati consolidati per creare cruscotti in tempo reale.


Questo articolo è stato utile?