Я работал над проектом, который использует довольно простой конвейер данных для очистки и преобразования необработанных файлов csv в обработанные данные с использованием Python3.8 и Lambda для создания различных подмножеств, которые отправляются в соответствующие корзины S3. Функция Lambda запускается путем загрузки необработанного CSV-файла в приемную корзину S3, которая инициирует процесс.
Однако я хотел бы также отправить некоторые из этих обработанных данных непосредственно в Quicksight для приема из той же функции Lambda для визуальной проверки, и именно здесь я сейчас застрял.
Часть функции (без импорта) у меня есть только с обработкой CSV и загрузкой в S3, и это часть, которая мне нравится напрямую загружать в Quicksight:
def featureengineering(event, context):
bucket_name = event['Records'][0]['s3']['bucket']['name']
s3_file_name = event['Records'][0]['s3']['object']['key']
read_file = s3_client.get_object(Bucket=bucket_name,Key=s3_file_name)
#turning the CSV into a dataframe in AWS Lambda
s3_data = io.BytesIO(read_file.get('Body').read())
df = pd.read_csv(s3_data, encoding="ISO-8859-1")
#replacing erroneous zero values to nan (missing) which is more accurate and a general table,
#and creating a new column with just three stages instead for simplification
df[['Column_A','Column_B']] = df[['Column_A','Column_B']].replace(0,np.nan)
#applying function for feature engineering of 'newstage' function
df['NewColumn'] = df.Stage.apply(newstage)
df1 = df
df1.to_csv(csv_buffer1)
s3_resource.Object(bucket1, csv_file_1).put(Body=csv_buffer1.getvalue()) #downloading df1 to S3
Итак, в тот момент, когда df1 отправляется в его ведро S3 (что отлично работает), но я бы хотел, чтобы он напрямую загружался в Quicksight в качестве автоматического обновления специй.
Покопавшись, я нашел похожий вопрос с ответом
import boto3
import time
import sys
client = boto3.client('quicksight')
response = client.create_ingestion(DataSetId='<dataset-id>',IngestionId='<ingetion-id>',AwsAccountId='<aws-account-id>')
но зависание, которое у меня происходит, находится в DataSetId или в более общем плане, как мне превратить pandas DataFrame df1 в лямбда-функции во что-то, что API CreateIngestion может принять и автоматически отправить в QuickSight как автоматизированный приправить обновлением самых последних обработанных данных?