The Dataflow service runs pipelines that are defined by the
Apache Beam SDK. But for many use cases, you don't need to write code
with the SDK, because Dataflow provides several no-code and
low-code options.

- **Templates** . Dataflow provides
  [prebuilt templates](https://docs.cloud.google.com/dataflow/docs/guides/templates/provided-templates) for
  moving data from one product to another. For example, you can use a template
  to move data from
  [Pub/Sub to BigQuery](https://docs.cloud.google.com/dataflow/docs/guides/templates/provided/pubsub-to-bigquery).

- **Job builder** . The [job builder](https://docs.cloud.google.com/dataflow/docs/guides/job-builder) is a
  visual UI for building Dataflow pipelines in the
  Google Cloud console. It supports a subset of Apache Beam sources and
  sinks, as well as transforms such as joins, Python functions, and SQL
  queries. We recommend the job builder for simple use cases such as data
  movement.

- **Turnkey transforms for ML** . For machine learning (ML) pipelines,
  Dataflow provides
  turnkey transforms that require minimal code to configure. As a
  starting point, run an [example ML
  notebook](https://github.com/apache/beam/blob/master/examples/notebooks/beam-ml/README.md)
  in Google Colab. To learn more, see the [Dataflow ML
  overview](https://docs.cloud.google.com/dataflow/docs/machine-learning).

- **Apache Beam SDK**. To get the full power of Apache Beam, use the
  SDK to write a custom pipeline in Python, Java, or Go.

To help your decision, the following table lists some common examples.

| I want to ... | Recommended approach |
|---|---|
| Move data from a source to a sink, with no custom logic. | [Job builder](https://docs.cloud.google.com/dataflow/docs/guides/job-builder-custom-job) or [template](https://docs.cloud.google.com/dataflow/docs/guides/templates/provided-templates) We recommend starting with the job builder. If the job builder doesn't support your use case, see if there is a template for it. |
| Move data from a source to a sink, and apply custom logic using Python functions or SQL. | [Job builder](https://docs.cloud.google.com/dataflow/docs/guides/job-builder-custom-job) |
| Use an ML model in my pipeline or prepare my data for training or inference. | [Dataflow ML turnkey transforms](https://docs.cloud.google.com/dataflow/docs/machine-learning) |
| Write a pipeline that requires more advanced Apache Beam features. | [Apache Beam SDK](https://docs.cloud.google.com/dataflow/docs/guides/installing-beam-sdk) for Java, Python, or Go |

## What's next

- Get started with a specific Dataflow use case and approach:
  - [Quickstart: Use the job
    builder](https://docs.cloud.google.com/dataflow/docs/quickstarts/create-pipeline-job-builder).
  - [Quickstart: Run a Dataflow
    template](https://docs.cloud.google.com/dataflow/docs/quickstarts/create-streaming-pipeline-template).
  - [Dataflow ML notebook: Use RunInference for Generative AI](https://docs.cloud.google.com/dataflow/docs/notebooks/run_inference_generative_ai).
  - [Create a Dataflow pipeline using the Apache Beam SDK and Python](https://docs.cloud.google.com/dataflow/docs/guides/create-pipeline-python).
- See more [Dataflow use cases](https://docs.cloud.google.com/dataflow/docs/use-cases).
- Learn more about [building pipelines](https://docs.cloud.google.com/dataflow/docs/guides/build-pipelines).