You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
be-optimumoh/temporal/transformation/wo_transform.py

49 lines
1.2 KiB
Python

# src/transformers/sensor_data.py
from typing import Dict, Any
import pandas as pd
import numpy as np
from datetime import datetime
from uuid import UUID, uuid4
from config import config
class WoDataTransformer:
def transform(self, df: pd.DataFrame) -> pd.DataFrame:
"""
Transform sensor data according to business rules
"""
# Create a copy to avoid modifying original data
transformed = df.copy()
# 1. Add UUID
transformed['id'] = uuid4()
# # 5. Drop unnecessary columns
# columns_to_drop = self.config.get('columns_to_drop', [])
# if columns_to_drop:
# transformed = transformed.drop(columns=columns_to_drop, errors='ignore')
return transformed
def validate(self, df: pd.DataFrame) -> bool:
"""
Validate transformed data
"""
if df.empty:
return False
# Check required columns
if not all(col in df.columns for col in config.get('columns')):
return False
# check id column and id is UUID
if 'id' not in df.columns:
return False
if not all(isinstance(val, UUID) for val in df['id']):
return False
return True