| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 | [role="xpack"][testenv="basic"][[put-data-frame-transform]]=== Create {dataframe-transforms} API++++<titleabbrev>Create {dataframe-transforms}</titleabbrev>++++Instantiates a {dataframe-transform}.==== Request`PUT _data_frame/transforms/<data_frame_transform_id>`//===== Description==== Path Parameters`data_frame_transform_id` (required)::  (string) Identifier for the {dataframe-transform}. This identifier can contain  lowercase alphanumeric characters (a-z and 0-9), hyphens, and underscores. It  must start and end with alphanumeric characters.==== Request Body`source`:: The source index or index pattern.`dest`:: The destination index.`pivot`:: Defines the pivot function `group by` fields and the aggregation toreduce the data.//==== Authorization==== ExamplesThe following example creates a {dataframe-transform} for the {kib} eCommercesample data:[source,js]--------------------------------------------------PUT _data_frame/transforms/ecommerce_transform{  "source": "kibana_sample_data_ecommerce",  "dest": "kibana_sample_data_ecommerce_transform",  "pivot": {    "group_by": {      "customer_id": {        "terms": {          "field": "customer_id"        }      }    },    "aggregations": {      "max_price": {        "max": {          "field": "taxful_total_price"        }      }    }  }}--------------------------------------------------// CONSOLE// TEST[skip:add sample kibana data]When the transform is created, you receive the following results:[source,js]----{  "acknowledged" : true}----// NOTCONSOLE
 |