name: text_dataset_create
description: |
        Creates a new text dataset and optionally imports data into dataset
        when source and import_schema_uri are passed.
        Args:
            display_name (String):
                Required. The user-defined name of the Dataset.
                The name can be up to 128 characters long and can be consist
                of any UTF-8 characters.
            gcs_source (Union[str, Sequence[str]]):
                Google Cloud Storage URI(-s) to the
                input file(s). May contain wildcards. For more
                information on wildcards, see
                https://cloud.google.com/storage/docs/gsutil/addlhelp/WildcardNames.
                examples:
                    str: "gs://bucket/file.csv"
                    Sequence[str]: ["gs://bucket/file1.csv", "gs://bucket/file2.csv"]
            import_schema_uri (String):
                Points to a YAML file stored on Google Cloud
                Storage describing the import format. Validation will be
                done against the schema. The schema is defined as an
                `OpenAPI 3.0.2 Schema
                Object <https://tinyurl.com/y538mdwt>`__.
            data_item_labels (JsonObject):
                Labels that will be applied to newly imported DataItems. If
                an identical DataItem as one being imported already exists
                in the Dataset, then these labels will be appended to these
                of the already existing one, and if labels with identical
                key is imported before, the old label value will be
                overwritten. If two DataItems are identical in the same
                import data operation, the labels will be combined and if
                key collision happens in this case, one of the values will
                be picked randomly. Two DataItems are considered identical
                if their content bytes are identical (e.g. image bytes or
                pdf bytes). These labels will be overridden by Annotation
                labels specified inside index file refenced by
                ``import_schema_uri``,
                e.g. jsonl file.
            project (String):
                Required. project to retrieve dataset from.
            location (String):
                Optional location to retrieve dataset from.
            labels (JsonObject):
                Optional. Labels with user-defined metadata to organize your Tensorboards.
                Label keys and values can be no longer than 64 characters
                (Unicode codepoints), can only contain lowercase letters, numeric
                characters, underscores and dashes. International characters are allowed.
                No more than 64 user labels can be associated with one Tensorboard
                (System labels are excluded).
                See https://goo.gl/xmQnxf for more information and examples of labels.
                System reserved label keys are prefixed with "aiplatform.googleapis.com/"
                and are immutable.
            encryption_spec_key_name (Optional[String]):
                Optional. The Cloud KMS resource identifier of the customer
                managed encryption key used to protect the dataset. Has the
                form:
                ``projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key``.
                The key needs to be in the same region as where the compute
                resource is created.
                If set, this Dataset and all sub-resources of this Dataset will be secured by this key.
                Overrides encryption_spec_key_name set in aiplatform.init.
        Returns:
            text_dataset (TextDataset):
                Instantiated representation of the managed text dataset resource.
inputs:
- {name: project, type: String}
- {name: location, type: String, default: "us-central1"}
- {name: display_name, type: String}
- {name: data_item_labels, type: JsonObject, optional: true, default: '{}'}
- {name: gcs_source, type: String, optional: true}
- {name: import_schema_uri, type: String, optional: true}
- {name: labels, type: JsonObject, optional: true, default: '{}'}
- {name: encryption_spec_key_name, type: String, optional: true}
outputs:
- {name: dataset, type: google.VertexDataset}
implementation:
  container:
    image: gcr.io/ml-pipeline/google-cloud-pipeline-components:1.10.13
    command: [python3, -m, google_cloud_pipeline_components.container.aiplatform.remote_runner,
      --cls_name, TextDataset, --method_name, create]
    args:
    - --method.project
    - {inputValue: project}
    - --method.location
    - {inputValue: location}
    - --method.display_name
    - {inputValue: display_name}
    - --method.data_item_labels
    - {inputValue: data_item_labels}
    - if:
        cond: {isPresent: gcs_source}
        then:
        - --method.gcs_source
        - {inputValue: gcs_source}
    - if:
        cond: {isPresent: import_schema_uri}
        then:
        - --method.import_schema_uri
        - {inputValue: import_schema_uri}
    - --method.labels
    - {inputValue: labels}
    - if:
        cond: {isPresent: encryption_spec_key_name}
        then:
        - --method.encryption_spec_key_name
        - {inputValue: encryption_spec_key_name}
    - --executor_input
    - '{{$}}'
    - --resource_name_output_artifact_uri
    - {outputUri: dataset}
