Я уже две недели борюсь с моей лямбда-функцией.
По сути, PUT-запрос в моем S3-Bucket запускает мою лямбду, которая выполняет оператор SQL, и генерируется таблица. Так и должно быть, каждый раз JSON -файл загружается в S3.
Проблема в том, что таблица (с данными) генерируется только для первого файла, который я загружаю в S3-корзину, или когда много файлов «в первый раз» загружаются в S3-корзину. «все вместе».
Как мне преодолеть эту проблему? Я новичок в Python / AWS / ... Есть ли у вас какие-либо предложения?
Ввод: когда файл загружается в S3-Bucket, таблица должна создаваться в первый раз, а для следующего файлы, таблица должна быть обновлена (запись новых JSON файлов на S3).
Надеюсь, вы мне поможете:)
Заранее спасибо!
Я вставляю код ниже:
import json
import boto3
def lambda_handler(event, context):
query_1 = "CREATE TABLE IF NOT EXISTS auswertungen.anzahlmessungen \
WITH ( format='JSON', external_location='s3://qs-datalake/Folderxxx/' ) AS \
SELECT S.locationsid AS LocationID, \
CAST(split_part(SD.datetimestamp, \
' ', 1) AS DATE) AS Datum, COUNT(*) AS Counter \
FROM anreicherungen.sensors AS S \
INNER JOIN sensordata.sensordata AS SD \
ON CAST(S.sensorsid AS VARCHAR) = SD.sensorsid \
GROUP BY S.locationsid, CAST(split_part(SD.datetimestamp, ' ', 1) AS DATE);"
database = "auswertungen"
s3_output = "s3://aws-athena-query-results-eu-west-1-xxxxxxxx"
client = boto3.client('athena')
response = client.start_query_execution(QueryString = query_1,
QueryExecutionContext={
'Database': database
},
ResultConfiguration={
'OutputLocation': s3_output
}
)
return response