Skip to content

create_changeset

create_changeset(
    dataset_id: DatasetId,
    change_type: ChangeType,
    source_params: SourceParams,
    format_params: FormatParams,
    *,
    config_overrides: Optional[finspacedataClientConfig] = None,
    client_token: Optional[ClientToken] = None,
) -> CreateChangesetResponse

Creates a new Changeset in a FinSpace Dataset.

Parameters:

  • client_token (Optional[ClientToken], default: None ) –

    A token that ensures idempotency. This token expires in 10 minutes.

  • dataset_id (DatasetId) –

    The unique identifier for the FinSpace Dataset where the Changeset will be created.

  • change_type (ChangeType) –

    The option to indicate how a Changeset will be applied to a Dataset.

    • REPLACE – Changeset will be considered as a replacement to all prior loaded Changesets.

    • APPEND – Changeset will be considered as an addition to the end of all prior loaded Changesets.

    • MODIFY – Changeset is considered as a replacement to a specific prior ingested Changeset.

  • source_params (SourceParams) –

    Options that define the location of the data being ingested (s3SourcePath) and the source of the changeset (sourceType).

    Both s3SourcePath and sourceType are required attributes.

    Here is an example of how you could specify the sourceParams:

    "sourceParams": { "s3SourcePath": "s3://finspace-landing-us-east-2-bk7gcfvitndqa6ebnvys4d/scratch/wr5hh8pwkpqqkxa4sxrmcw/ingestion/equity.csv", "sourceType": "S3" }

    The S3 path that you specify must allow the FinSpace role access. To do that, you first need to configure the IAM policy on S3 bucket. For more information, see Loading data from an Amazon S3 Bucket using the FinSpace API section.

  • format_params (FormatParams) –

    Options that define the structure of the source file(s) including the format type (formatType), header row (withHeader), data separation character (separator) and the type of compression (compression).

    formatType is a required attribute and can have the following values:

    • PARQUET – Parquet source file format.

    • CSV – CSV source file format.

    • JSON – JSON source file format.

    • XML – XML source file format.

    Here is an example of how you could specify the formatParams:

    "formatParams": { "formatType": "CSV", "withHeader": "true", "separator": ",", "compression":"None" }

    Note that if you only provide formatType as CSV, the rest of the attributes will automatically default to CSV values as following:

    { "withHeader": "true", "separator": "," }

    For more information about supported file formats, see Supported Data Types and File Formats in the FinSpace User Guide.

Raises:

Source code in docs_src/capo_finspace_data/_services/finspacedata.py
def create_changeset(
    self,
    dataset_id: "capo_finspace_data.types.dataset_id.DatasetId",
    change_type: "capo_finspace_data.types.change_type.ChangeType",
    source_params: "capo_finspace_data.types.source_params.SourceParams",
    format_params: "capo_finspace_data.types.format_params.FormatParams",
    *,
    config_overrides: Optional[finspacedataClientConfig] = None,
    client_token: Optional[
        "capo_finspace_data.types.client_token.ClientToken"
    ] = None,
) -> "capo_finspace_data.types.create_changeset_response.CreateChangesetResponse":
    """<p>Creates a new Changeset in a FinSpace Dataset.</p>

    Args:
        client_token: <p>A token that ensures idempotency. This token expires in 10 minutes.</p>
        dataset_id: <p>The unique identifier for the FinSpace Dataset where the Changeset will be created. </p>
        change_type: <p>The option to indicate how a Changeset will be applied to a Dataset.</p> <ul> <li> <p> <code>REPLACE</code> – Changeset will be considered as a replacement to all prior loaded Changesets.</p> </li> <li> <p> <code>APPEND</code> – Changeset will be considered as an addition to the end of all prior loaded Changesets.</p> </li> <li> <p> <code>MODIFY</code> – Changeset is considered as a replacement to a specific prior ingested Changeset.</p> </li> </ul>
        source_params: <p>Options that define the location of the data being ingested (<code>s3SourcePath</code>) and the source of the changeset (<code>sourceType</code>).</p> <p>Both <code>s3SourcePath</code> and <code>sourceType</code> are required attributes.</p> <p>Here is an example of how you could specify the <code>sourceParams</code>:</p> <p> <code> "sourceParams": { "s3SourcePath": "s3://finspace-landing-us-east-2-bk7gcfvitndqa6ebnvys4d/scratch/wr5hh8pwkpqqkxa4sxrmcw/ingestion/equity.csv", "sourceType": "S3" } </code> </p> <p>The S3 path that you specify must allow the FinSpace role access. To do that, you first need to configure the IAM policy on S3 bucket. For more information, see <a href="https://docs.aws.amazon.com/finspace/latest/data-api/fs-using-the-finspace-api.html#access-s3-buckets">Loading data from an Amazon S3 Bucket using the FinSpace API</a> section.</p>
        format_params: <p>Options that define the structure of the source file(s) including the format type (<code>formatType</code>), header row (<code>withHeader</code>), data separation character (<code>separator</code>) and the type of compression (<code>compression</code>). </p> <p> <code>formatType</code> is a required attribute and can have the following values: </p> <ul> <li> <p> <code>PARQUET</code> – Parquet source file format.</p> </li> <li> <p> <code>CSV</code> – CSV source file format.</p> </li> <li> <p> <code>JSON</code> – JSON source file format.</p> </li> <li> <p> <code>XML</code> – XML source file format.</p> </li> </ul> <p>Here is an example of how you could specify the <code>formatParams</code>:</p> <p> <code> "formatParams": { "formatType": "CSV", "withHeader": "true", "separator": ",", "compression":"None" } </code> </p> <p>Note that if you only provide <code>formatType</code> as <code>CSV</code>, the rest of the attributes will automatically default to CSV values as following:</p> <p> <code> { "withHeader": "true", "separator": "," } </code> </p> <p> For more information about supported file formats, see <a href="https://docs.aws.amazon.com/finspace/latest/userguide/supported-data-types.html">Supported Data Types and File Formats</a> in the FinSpace User Guide.</p>

    Raises:
        capo_finspace_data.errors.access_denied_exception.AccessDeniedException: <p>You do not have sufficient access to perform this action.</p>
        capo_finspace_data.errors.conflict_exception.ConflictException: <p>The request conflicts with an existing resource.</p>
        capo_finspace_data.errors.internal_server_exception.InternalServerException: <p>The request processing has failed because of an unknown error, exception or failure.</p>
        capo_finspace_data.errors.limit_exceeded_exception.LimitExceededException: <p>A limit has exceeded.</p>
        capo_finspace_data.errors.resource_not_found_exception.ResourceNotFoundException: <p>One or more resources can't be found.</p>
        capo_finspace_data.errors.throttling_exception.ThrottlingException: <p>The request was denied due to request throttling.</p>
        capo_finspace_data.errors.validation_exception.ValidationException: <p>The input fails to satisfy the constraints specified by an AWS service.</p>
        capo_finspace_data.errors.UnknownServiceError: The service returned an error code this client does not model.
    """

    def _handler(
        req: "OperationRequest[capo_finspace_data.types.create_changeset_request.CreateChangesetRequest]",
    ) -> OperationResponse[
        "capo_finspace_data.types.create_changeset_response.CreateChangesetResponse"
    ]:
        import capo_finspace_data._operations.aws_habanero_public_api.create_changeset

        output, http_response = (
            capo_finspace_data._operations.aws_habanero_public_api.create_changeset.create_changeset(
                req.options, req.input
            )
        )
        return OperationResponse(output=output, response=http_response)

    interceptors_, options_ = self.operation_options(
        config_overrides, OperationLogging("CreateChangeset")
    )
    input_: capo_finspace_data.types.create_changeset_request.CreateChangesetRequest = {
        "dataset_id": dataset_id,
        "change_type": change_type,
        "source_params": source_params,
        "format_params": format_params,
    }
    if client_token is None:
        client_token = str(uuid.uuid4())
    input_["client_token"] = client_token

    response = execute_pipeline(
        OperationRequest(input=input_, options=options_),
        handler=_handler,
        interceptors=list(interceptors_),
    )
    response.response.close()
    return response.output