Transformation Request ====================== Specify a Request ----------------- Transform requests are specified with one or more Sample specifications, and optionally a General section and one or more definitions which are substituted into the Sample specifications. These requests can be defined as: 1. A YAML file 2. A Python dictionary 3. Typed python objects Regardless of how the request is specified, the request is submitted to ServiceX using the ``deliver`` function, which returns either a list of URLs or a list of local file paths for each requested sample. The Sample Sections ^^^^^^^^^^^^^^^^^^^ Each Sample section represents a single query to be executed. It includes the following fields: * ``Name``: A title for this sample (this is arbitrary and chosen by the user). * ``Dataset``: Rucio dataset, OpenData reference, or a list of files via XRootD. * ``Query``: The query to be executed. This can be a FuncADL query, a Python function, or a dictionary of uproot selections. * (Optional) ``NFiles``: Limit on the number of files to process. * (Optional) ``IgnoreLocalCache``: If set to true, don't use a local cache for this sample and always submit to ServiceX. The General Section ^^^^^^^^^^^^^^^^^^^ The General section of the request includes the following fields: * (Optional) ``OutputFormat``: Can be ``root-ttree`` (default) or ``parquet`` * (Optional) ``Delivery``: Can be ``URLs`` or ``LocalCache`` (default) In general, if you are running on your laptop away from the ServiceX site and are working with a small amount of data, select ``LocalCache`` for ``Delivery``. If you are located at an analysis facility, please select ``URLs``. The Definitions Sections ^^^^^^^^^^^^^^^^^^^^^^^^ The Definitions section is a dictionary of values that can be substituted into fields in the Sample sections. This is useful for defining common values that are used in multiple samples. This is an advanced concept.