import numpy as np
import pandas as pd
import plotly.express as px
import morph
from morph import MorphGlobalContext
@morph.funcdefgenerate_population_data(context: MorphGlobalContext):# Initialize dates = pd.date_range(start="2022-01-01", end="2024-12-31", freq="M").strftime("%Y-%m-%d") states =["California","Texas","Florida","New York","Illinois"]# List of states# Generate dummy data data = pd.DataFrame({"date": np.tile(dates,len(states)),# Repeat dates for all states"state": np.repeat(states,len(dates)),# Repeat each state for all dates"population": np.random.randint(100000,10000000, size=len(dates)*len(states))# Generate random population data})return data
@morph.func@morph.load_data("generate_population_data")deffilter_plotly_chart(context: MorphGlobalContext): data = context.data["generate_population_data"] start_date = context.vars["start_date"] end_date = context.vars["end_date"] state = context.vars["state"]# apply filter df = data[data["date"].between(start_date, end_date)]if state !="all": df = df[df["state"]== state] fig = px.bar(df, x="date", y="population", color="state", title="Population Over Time by State")return fig
SQL
{{
config( name ="get_state_list")}}
selectdistinct state
from {{load_data("generate_population_data")}}