Code: Select all
import logging
import azure.functions as func
from io import StringIO
import pandas as pd
from datetime import datetime as dt
import json
#filter the dataframe
def filter(pdf, keys, daterange):
jkeys=[]
for key in keys:
#filter by numeric key
if(reg.isdigit()):
jkeys.append(int(key))
#filtering by two types of keys
pdfA=pdf[pdf['key'].isin(keys)]
pdfS=pdf[pdf['numerickey'].isin(jkeys)]
#concat the DFs
pdf=pd.concat([pdfS,pdfA],axis=0)
#Filtering by a dateRange or single date
if(daterange.isdigit()):
pdf=pdf[pdf['Day']==int(daterange)]
return pdf
else:
#getting the two dates
date=daterange.split('-')
#filtering the rows
pdf=pdf[(pdf['Day']>=int(date[0])) & (pdf['Day'] str:
if not param:
try:
req_body = req.get_json()
except ValueError:
if param != None and '-' in param:
return func.HttpResponse(
"Set a date in the query",
status_code=400
)
else:
param = req_body.get(param_name)
return param
else:
return param
def main(req: func.HttpRequest,
inputBlob: func.InputStream) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
#get the params
daterange = req.params.get('daterange')
keys = req.params.get('keys')
name=req.params.get('name')
daterange = param_validation(daterange, 'daterange', req)
keys = param_validation(keys, 'keys', req)
#this condition is included just to test fast if works
if name:
return func.HttpResponse(f"Hello {name}!")
#This is to get the real data request function
if daterange and (keys):
try:
if daterange and keys:
# get the data from a csv in the datalake
data = pd.read_csv(StringIO(inputBlob.read().decode('utf-8')))
keys=keys.split(',')
dfFilt=filter(data,keys,daterange).fillna(0)
return func.HttpResponse(f"{json.dumps(dfFilt.to_dict(orient='record'))}")
else:
return func.HttpResponse(
"insert a valid daterange to the query",
status_code=400
)
except:
return func.HttpResponse(
"Params are wrong.",
status_code=500
)
else:
return func.HttpResponse(
"Params missed",
status_code=400
)
Danke!