AWS Integration - Alle Tulip-Tabellen in Lambda-Funktion abrufen
  • 27 May 2024
  • 2 Minuten zu lesen
  • Mitwirkende

AWS Integration - Alle Tulip-Tabellen in Lambda-Funktion abrufen


Artikel-Zusammenfassung

Rationalisierung des Abrufs von Daten von Tulip zu AWS für umfassendere Analysen und Integrationsmöglichkeiten

Zweck

Diese Anleitung zeigt Schritt für Schritt, wie man alle Tulip-Tabellen-Daten über eine Lambda-Funktion in AWS abruft.

Dies geht über die grundlegende Abfrage hinaus und iteriert durch alle Tabellen in einer bestimmten Instanz; dies kann für einen wöchentlichen ETL-Job (Extract, Transform, Load) sehr nützlich sein.

Die Lambda-Funktion kann über eine Vielzahl von Ressourcen wie Event Bridge-Timer oder ein API-Gateway ausgelöst werden.

Eine Beispielarchitektur ist unten aufgeführt:image

Einrichtung

Diese Beispielintegration erfordert Folgendes:

  • Verwendung von Tulip Tables API (API-Schlüssel und Geheimnis in den Kontoeinstellungen abrufen)
  • Tulip Table (Holen Sie sich die Unique ID der Tabelle

Wichtigste Schritte: 1. Erstellen Sie eine AWS Lambda Funktion mit dem entsprechenden Trigger (API Gateway, Event Bridge Timer, etc.) 2. Holen Sie die Daten der Tulip-Tabelle mit dem folgenden Beispiel ```python import json import pandas as pd import requests from sqlalchemy import create_engine import os

def lambda_handler(event, context): # db initialisieren 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()) # Funktion zur Umwandlung von Dictionaries in Strings def dict_to_str(cell): if isinstance(cell, dict): return str(cell) return cell # Funktion zur Abfrage von Tabellen 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+function, 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!')}


## Anwendungsfälle und nächste Schritte


Sobald Sie die Integration mit Lambda abgeschlossen haben, können Sie die Daten problemlos mit einem Sagemaker-Notebook, QuickSight oder einer Vielzahl anderer Tools analysieren.


**1. Fehlervorhersage**- Identifizieren Sie Produktionsfehler, bevor sie auftreten, und erhöhen Sie die Fehlerquote beim ersten Mal. - Identifizieren Sie die wichtigsten Qualitätsfaktoren in der Produktion, um Verbesserungen zu implementieren.


**2. Optimierung der Qualitätskosten**- Identifizierung von Möglichkeiten zur Optimierung des Produktdesigns ohne Beeinträchtigung der Kundenzufriedenheit


**3. Energieoptimierung in der Produktion**- Identifizierung von Produktionshebeln zur Optimierung des Energieverbrauchs


**4. Liefer- und Planungsvorhersage und -optimierung**- Optimierung des Produktionsplans auf der Grundlage der Kundennachfrage und des Echtzeit-Auftragsplans


**5. Globales Maschinen-/Linien-Benchmarking**- Benchmarking ähnlicher Maschinen oder Anlagen mit Normalisierung


**6. Globales/regionales digitales Leistungsmanagement**- Konsolidierte Daten zur Erstellung von Dashboards in Echtzeit


War dieser Artikel hilfreich?