# Parameters & Mapped Tasks
Writing a flow to greet one person is all good, but if the requirements change, prefect can still help you. Let's say:
- You now need to greet multiple people
- You need the list of people to be configurable
In the core ETL tutorial we cover how to do this using parameters and mapped tasks. These concepts work equally well when run using a Prefect backend.
# Update Your Flow
After a few minutes of editing, you might come up with a flow that looks something like this:
import prefect
from prefect import task, Flow, Parameter
@task
def say_hello(name):
logger = prefect.context.get("logger")
logger.info(f"Hello, {name}!")
with Flow("hello-flow") as flow:
# An optional parameter "people", with a default list of names
people = Parameter("people", default=["Arthur", "Ford", "Marvin"])
# Map `say_hello` across the list of names
say_hello.map(people)
# Register the flow under the "tutorial" project
flow.register(project_name="tutorial")
This flow has an optional parameter people
that takes in a list of names to
greet (with a default list provided). It then maps the say_hello
task over
the list of names.
Run the above to register a new version of hello-flow
. This will archive the
old version and register a new version using the new code.
# Execute a Flow Run
As in the previous section, you can execute a flow run using the "Quick Run" button in the UI. Make sure you still have your Agent running from before.
After a few seconds, you should see your flow run complete successfully.
This run has a few more tasks than before (one people
parameter task, and
several mapped say_hello
tasks). Since we used the parameter defaults, we
should see 3 mapped say_hello
tasks, one for each name.
Click through the logs tab to see the logs for each name.
# Specify New Parameters
To start a flow run with non-default values for a parameter, you can click the
"Run"
button (middle of the flow page) instead of the "Quick Run"
button.
This brings you to a run
page where you can
configure more details for a specific flow run. Here we'll set the flow run
name to "custom-names"
, and provide new values for the "people"
parameter.
When you're happy with the flow run settings, click "Run"
to create a new
flow run using the new settings.
Once the flow run starts, check the logs to see that your settings took effect.
Custom parameters for a flow run can also be specified programmatically, see the flow run docs for more information.