def test_step_table_recast(): source = Resource(path="data/transform.csv") source.infer() target = transform( source, steps=[ steps.table_normalize(), steps.table_melt(field_name="id"), steps.table_recast(field_name="id"), ], ) assert target.schema == source.schema assert target.read_rows() == [ { "id": 1, "name": "germany", "population": 83 }, { "id": 2, "name": "france", "population": 66 }, { "id": 3, "name": "spain", "population": 47 }, ]
def test_transform(): source = Resource(path="data/transform.csv") source.infer() target = transform( source, steps=[ steps.table_normalize(), steps.table_melt(field_name="id"), ], ) assert target.schema == { "fields": [ {"name": "id", "type": "integer"}, {"name": "variable"}, {"name": "value"}, ] } assert target.read_rows() == [ {"id": 1, "variable": "name", "value": "germany"}, {"id": 1, "variable": "population", "value": 83}, {"id": 2, "variable": "name", "value": "france"}, {"id": 2, "variable": "population", "value": 66}, {"id": 3, "variable": "name", "value": "spain"}, {"id": 3, "variable": "population", "value": 47}, ]
def test_step_table_melt(): source = Resource("data/transform.csv") target = transform( source, steps=[ steps.table_normalize(), steps.table_melt(field_name="name"), ], ) assert target.schema == { "fields": [ { "name": "name", "type": "string" }, { "name": "variable" }, { "name": "value" }, ] } assert target.read_rows() == [ { "name": "germany", "variable": "id", "value": 1 }, { "name": "germany", "variable": "population", "value": 83 }, { "name": "france", "variable": "id", "value": 2 }, { "name": "france", "variable": "population", "value": 66 }, { "name": "spain", "variable": "id", "value": 3 }, { "name": "spain", "variable": "population", "value": 47 }, ]
def test_step_table_melt_with_to_field_names(): source = Resource(path="data/transform.csv") target = transform( source, steps=[ steps.table_normalize(), steps.table_melt(field_name="name", variables=["population"], to_field_names=["key", "val"]), ], ) assert target.schema == { "fields": [ { "name": "name", "type": "string" }, { "name": "key" }, { "name": "val" }, ] } assert target.read_rows() == [ { "name": "germany", "key": "population", "val": 83 }, { "name": "france", "key": "population", "val": 66 }, { "name": "spain", "key": "population", "val": 47 }, ]