# TransformStepProperty

A step in data preparation that performs a specific operation on the data.

- Source: Generated code
- Type last changed: v2.224.0 · 13 Nov 2025

## Example

```ts
// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import { aws_quicksight as quicksight } from 'aws-cdk-lib';
const transformStepProperty: quicksight.CfnDataSet.TransformStepProperty = {
  aggregateStep: {
    aggregations: [{
      aggregationFunction: {
        listAggregation: {
          distinct: false,
          separator: 'separator',

          // the properties below are optional
          inputColumnName: 'inputColumnName',
        },
        percentileAggregation: {
          percentileValue: 123,

          // the properties below are optional
          inputColumnName: 'inputColumnName',
        },
        simpleAggregation: {
          functionType: 'functionType',

          // the properties below are optional
          inputColumnName: 'inputColumnName',
        },
      },
      newColumnId: 'newColumnId',
      newColumnName: 'newColumnName',
    }],
    alias: 'alias',
    source: {
      transformOperationId: 'transformOperationId',

      // the properties below are optional
      columnIdMappings: [{
        sourceColumnId: 'sourceColumnId',
        targetColumnId: 'targetColumnId',
      }],
    },

    // the properties below are optional
    groupByColumnNames: ['groupByColumnNames'],
  },
  appendStep: {
    alias: 'alias',
    appendedColumns: [{
      columnName: 'columnName',
      newColumnId: 'newColumnId',
    }],

    // the properties below are optional
    firstSource: {
      transformOperationId: 'transformOperationId',

      // the properties below are optional
      columnIdMappings: [{
        sourceColumnId: 'sourceColumnId',
        targetColumnId: 'targetColumnId',
      }],
    },
    secondSource: {
      transformOperationId: 'transformOperationId',

      // the properties below are optional
      columnIdMappings: [{
        sourceColumnId: 'sourceColumnId',
        targetColumnId: 'targetColumnId',
      }],
    },
  },
  castColumnTypesStep: {
    alias: 'alias',
    castColumnTypeOperations: [{
      columnName: 'columnName',
      newColumnType: 'newColumnType',

      // the properties below are optional
      format: 'format',
      subType: 'subType',
    }],
    source: {
      transformOperationId: 'transformOperationId',

      // the properties below are optional
      columnIdMappings: [{
        sourceColumnId: 'sourceColumnId',
        targetColumnId: 'targetColumnId',
      }],
    },
  },
  createColumnsStep: {
    columns: [{
      columnId: 'columnId',
      columnName: 'columnName',
      expression: 'expression',
    }],

    // the properties below are optional
    alias: 'alias',
    source: {
      transformOperationId: 'transformOperationId',

      // the properties below are optional
      columnIdMappings: [{
        sourceColumnId: 'sourceColumnId',
        targetColumnId: 'targetColumnId',
      }],
    },
  },
  filtersStep: {
    alias: 'alias',
    filterOperations: [{
      conditionExpression: 'conditionExpression',
      dateFilterCondition: {
        columnName: 'columnName',
        comparisonFilterCondition: {
          operator: 'operator',

          // the properties below are optional
          value: {
            staticValue: 'staticValue',
          },
        },
        rangeFilterCondition: {
          includeMaximum: false,
          includeMinimum: false,
          rangeMaximum: {
            staticValue: 'staticValue',
          },
          rangeMinimum: {
            staticValue: 'staticValue',
          },
        },
      },
      numericFilterCondition: {
        columnName: 'columnName',
        comparisonFilterCondition: {
          operator: 'operator',

          // the properties below are optional
          value: {
            staticValue: 123,
          },
        },
        rangeFilterCondition: {
          includeMaximum: false,
          includeMinimum: false,
          rangeMaximum: {
            staticValue: 123,
          },
          rangeMinimum: {
            staticValue: 123,
          },
        },
      },
      stringFilterCondition: {
        columnName: 'columnName',
        comparisonFilterCondition: {
          operator: 'operator',

          // the properties below are optional
          value: {
            staticValue: 'staticValue',
          },
        },
        listFilterCondition: {
          operator: 'operator',

          // the properties below are optional
          values: {
            staticValues: ['staticValues'],
          },
        },
      },
    }],
    source: {
      transformOperationId: 'transformOperationId',

      // the properties below are optional
      columnIdMappings: [{
        sourceColumnId: 'sourceColumnId',
        targetColumnId: 'targetColumnId',
      }],
    },
  },
  importTableStep: {
    alias: 'alias',
    source: {
      sourceTableId: 'sourceTableId',

      // the properties below are optional
      columnIdMappings: [{
        sourceColumnId: 'sourceColumnId',
        targetColumnId: 'targetColumnId',
      }],
    },
  },
  joinStep: {
    alias: 'alias',
    leftOperand: {
      transformOperationId: 'transformOperationId',

      // the properties below are optional
      columnIdMappings: [{
        sourceColumnId: 'sourceColumnId',
        targetColumnId: 'targetColumnId',
      }],
    },
    onClause: 'onClause',
    rightOperand: {
      transformOperationId: 'transformOperationId',

      // the properties below are optional
      columnIdMappings: [{
        sourceColumnId: 'sourceColumnId',
        targetColumnId: 'targetColumnId',
      }],
    },
    type: 'type',

    // the properties below are optional
    leftOperandProperties: {
      outputColumnNameOverrides: [{
        outputColumnName: 'outputColumnName',

        // the properties below are optional
        sourceColumnName: 'sourceColumnName',
      }],
    },
    rightOperandProperties: {
      outputColumnNameOverrides: [{
        outputColumnName: 'outputColumnName',

        // the properties below are optional
        sourceColumnName: 'sourceColumnName',
      }],
    },
  },
  pivotStep: {
    alias: 'alias',
    pivotConfiguration: {
      pivotedLabels: [{
        labelName: 'labelName',
        newColumnId: 'newColumnId',
        newColumnName: 'newColumnName',
      }],

      // the properties below are optional
      labelColumnName: 'labelColumnName',
    },
    source: {
      transformOperationId: 'transformOperationId',

      // the properties below are optional
      columnIdMappings: [{
        sourceColumnId: 'sourceColumnId',
        targetColumnId: 'targetColumnId',
      }],
    },
    valueColumnConfiguration: {
      aggregationFunction: {
        listAggregation: {
          distinct: false,
          separator: 'separator',

          // the properties below are optional
          inputColumnName: 'inputColumnName',
        },
        percentileAggregation: {
          percentileValue: 123,

          // the properties below are optional
          inputColumnName: 'inputColumnName',
        },
        simpleAggregation: {
          functionType: 'functionType',

          // the properties below are optional
          inputColumnName: 'inputColumnName',
        },
      },
    },

    // the properties below are optional
    groupByColumnNames: ['groupByColumnNames'],
  },
  projectStep: {
    alias: 'alias',
    projectedColumns: ['projectedColumns'],
    source: {
      transformOperationId: 'transformOperationId',

      // the properties below are optional
      columnIdMappings: [{
        sourceColumnId: 'sourceColumnId',
        targetColumnId: 'targetColumnId',
      }],
    },
  },
  renameColumnsStep: {
    alias: 'alias',
    renameColumnOperations: [{
      columnName: 'columnName',
      newColumnName: 'newColumnName',
    }],
    source: {
      transformOperationId: 'transformOperationId',

      // the properties below are optional
      columnIdMappings: [{
        sourceColumnId: 'sourceColumnId',
        targetColumnId: 'targetColumnId',
      }],
    },
  },
  unpivotStep: {
    alias: 'alias',
    columnsToUnpivot: [{
      columnName: 'columnName',
      newValue: 'newValue',
    }],
    source: {
      transformOperationId: 'transformOperationId',

      // the properties below are optional
      columnIdMappings: [{
        sourceColumnId: 'sourceColumnId',
        targetColumnId: 'targetColumnId',
      }],
    },
    unpivotedLabelColumnId: 'unpivotedLabelColumnId',
    unpivotedLabelColumnName: 'unpivotedLabelColumnName',
    unpivotedValueColumnId: 'unpivotedValueColumnId',
    unpivotedValueColumnName: 'unpivotedValueColumnName',
  },
};
```

## Properties

- `aggregateStep`: [IResolvable](/cdk/api/v2/docs/aws-cdk-lib.IResolvable.html) | [CfnDataSet.AggregateOperationProperty](/cdk/api/v2/docs/aws-cdk-lib.aws_quicksight.CfnDataSet.AggregateOperationProperty.html) — A transform step that groups data and applies aggregation functions to calculate summary values.

- `appendStep`: [IResolvable](/cdk/api/v2/docs/aws-cdk-lib.IResolvable.html) | [CfnDataSet.AppendOperationProperty](/cdk/api/v2/docs/aws-cdk-lib.aws_quicksight.CfnDataSet.AppendOperationProperty.html) — A transform step that combines rows from multiple sources by stacking them vertically.

- `castColumnTypesStep`: [IResolvable](/cdk/api/v2/docs/aws-cdk-lib.IResolvable.html) | [CfnDataSet.CastColumnTypesOperationProperty](/cdk/api/v2/docs/aws-cdk-lib.aws_quicksight.CfnDataSet.CastColumnTypesOperationProperty.html) — A transform step that changes the data types of one or more columns.

- `createColumnsStep`: [IResolvable](/cdk/api/v2/docs/aws-cdk-lib.IResolvable.html) | [CfnDataSet.CreateColumnsOperationProperty](/cdk/api/v2/docs/aws-cdk-lib.aws_quicksight.CfnDataSet.CreateColumnsOperationProperty.html) — <p>A transform operation that creates calculated columns.

  Columns created in one such
              operation form a lexical closure.</p>

- `filtersStep`: [IResolvable](/cdk/api/v2/docs/aws-cdk-lib.IResolvable.html) | [CfnDataSet.FiltersOperationProperty](/cdk/api/v2/docs/aws-cdk-lib.aws_quicksight.CfnDataSet.FiltersOperationProperty.html) — A transform step that applies filter conditions.

- `importTableStep`: [IResolvable](/cdk/api/v2/docs/aws-cdk-lib.IResolvable.html) | [CfnDataSet.ImportTableOperationProperty](/cdk/api/v2/docs/aws-cdk-lib.aws_quicksight.CfnDataSet.ImportTableOperationProperty.html) — A transform step that brings data from a source table.

- `joinStep`: [IResolvable](/cdk/api/v2/docs/aws-cdk-lib.IResolvable.html) | [CfnDataSet.JoinOperationProperty](/cdk/api/v2/docs/aws-cdk-lib.aws_quicksight.CfnDataSet.JoinOperationProperty.html) — A transform step that combines data from two sources based on specified join conditions.

- `pivotStep`: [IResolvable](/cdk/api/v2/docs/aws-cdk-lib.IResolvable.html) | [CfnDataSet.PivotOperationProperty](/cdk/api/v2/docs/aws-cdk-lib.aws_quicksight.CfnDataSet.PivotOperationProperty.html) — A transform step that converts row values into columns to reshape the data structure.

- `projectStep`: [IResolvable](/cdk/api/v2/docs/aws-cdk-lib.IResolvable.html) | [CfnDataSet.ProjectOperationProperty](/cdk/api/v2/docs/aws-cdk-lib.aws_quicksight.CfnDataSet.ProjectOperationProperty.html) — <p>A transform operation that projects columns.

  Operations that come after a projection
              can only refer to projected columns.</p>

- `renameColumnsStep`: [IResolvable](/cdk/api/v2/docs/aws-cdk-lib.IResolvable.html) | [CfnDataSet.RenameColumnsOperationProperty](/cdk/api/v2/docs/aws-cdk-lib.aws_quicksight.CfnDataSet.RenameColumnsOperationProperty.html) — A transform step that changes the names of one or more columns.

- `unpivotStep`: [IResolvable](/cdk/api/v2/docs/aws-cdk-lib.IResolvable.html) | [CfnDataSet.UnpivotOperationProperty](/cdk/api/v2/docs/aws-cdk-lib.aws_quicksight.CfnDataSet.UnpivotOperationProperty.html) — A transform step that converts columns into rows to normalize the data structure.
