AWS 통합 - 람다 함수에서 모든 튤립 테이블 가져오기
  • 21 Oct 2024
  • 1 읽을 분
  • 기여자

AWS 통합 - 람다 함수에서 모든 튤립 테이블 가져오기


기사 요약

더 광범위한 분석 및 통합 기회를 위해 Tulip에서 AWS로 데이터 가져오기 간소화

목적

이 가이드에서는 Lambda 함수를 통해 모든 Tulip 테이블 데이터를 AWS로 가져오는 방법을 단계별로 안내합니다.

이는 기본 가져오기 쿼리를 넘어 주어진 인스턴스의 모든 테이블을 반복하는 것으로, 주간 ETL 작업(추출, 변환, 로드)에 유용하게 사용할 수 있습니다.

람다 함수는 이벤트 브리지 타이머나 API 게이트웨이와 같은 다양한 리소스를 통해 트리거될 수 있습니다.

아키텍처 예시는 다음과 같습니다:image

설정

이 예제 연동에는 다음이 필요합니다:

  • 튤립 테이블 API 사용(계정 설정에서 API 키 및 비밀번호 가져오기)
  • 튤립 테이블(테이블 고유 ID 가져오기

상위 단계: 1. 관련 트리거(API 게이트웨이, 이벤트 브리지 타이머 등)가 있는 AWS Lambda 함수 생성 2. 아래 예제를 사용하여 Tulip 테이블 데이터 가져오기```pythonimport jsonimport 판다를 pdimport 요청으로 가져오기 sqlalchemy에서 가져오기 create_engineimport os.

def lambda_handler(event, context): # 초기화 db host = os.getenv('호스트') user = os.getenv('사용자명') password = os.getenv('비밀번호') db = os.getenv('데이터베이스')

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())# 사전을 문자열로 변환하는 함수def dict_to_str(cell): if isinstance(cell, dict): return str(cell) return cell# 테이블 쿼리 functiondef 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'{table}을 데이터베이스에 썼다!')# 모든 테이블을 반복:df.apply(lambda row: write_to_db(row, base_url, api_header), axis=1)return { 'statusCode': 200, 'body': json.dumps('db에 썼다!')}


## 사용 사례 및 다음 단계


람다와의 통합을 완료한 후에는 새그메이커 노트북, QuickSight 또는 기타 다양한 도구를 사용하여 데이터를 쉽게 분석할 수 있습니다.


**1. 결함 예측 -** 생산 결함이 발생하기 전에 미리 파악하여 개선하기 위한 핵심 생산 동인을 파악합니다.


**2. 품질 최적화 비용-** 고객 만족도에 영향을 주지 않고 제품 설계를 최적화할 수 있는 기회 파악


**3. 생산 에너지 최적화-** 에너지 소비 최적화를 위한 생산 레버 식별


**4. 납기 및 계획 예측 및 최적화-** 고객 수요 및 실시간 주문 일정에 따라 생산 일정 최적화


**5. 글로벌 기계/라인 벤치마킹-** 유사 기계 또는 장비의 표준화를 통한 벤치마킹


**6. 글로벌/지역별 디지털 성과 관리-** 통합된 데이터로 실시간 대시보드 생성


이 문서가 도움이 되었습니까?