////
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at
  http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
////
:imagesdir: ../../assets/images/
:page-pagination:
:description: A Schema File Definition describes a stream layout that can be applied to a selected set of input/output transforms. The Schema Definition is a way to define a recurrent stream layout that can be reused in multiple pipelines, without requiring the user to redefine it multiple times.

= Static Schema Definition

== Description

image:icons/folder.svg[]

A Static Schema Definition describes a stream layout that can be applied to a selected set of input/output transforms. The Schema Definition is a way to define a recurrent stream layout, that can be reused in multiple pipelines.

Being able to use the same schema definition in multiple pipelines simplifies development and reduces the risk of errors in manual field or layout specification.

== Related Plugins

Transforms:

* xref:pipeline/transforms/textfileinput.adoc[Text File Input]
* xref:pipeline/transforms/textfileoutput.adoc[Text File Output]
* xref:pipeline/transforms/csvinput.adoc[CSV Input]
* xref:pipeline/transforms/excelinput.adoc[Excel Input]
* xref:pipeline/transforms/excelwriter.adoc[Excel Writer]
* xref:pipeline/transforms/schemamapping.adoc[Schema Mapping]

== Options

[options="header"]
|===
|Option |Description
|Name|The name to be used for this schema definition
|Description|The description to be used for this schema definition
|Field Separator|separator used between fields in the schema definition
|Enclosure|field enclosure used for fields in the schema definition
|Field Definitions|List of fields and attributes that describe the file layout for this schema definition.
|===

////
== Samples

* beam/pipelines/complex.hpl
* beam/pipelines/generate-synthetic-data.hpl
* beam/pipelines/input-process-output.hpl
* beam/pipelines/switch-case.hpl
* beam/pipelines/unbounded-synthetic-data.hpl
////