Ejemplo n.º 1
0
def test_step_field_add_with_function():
    source = Resource(path="data/transform.csv")
    target = transform(
        source,
        steps=[
            steps.table_normalize(),
            steps.field_add(
                name="calc",
                function=lambda row: row["id"] * 100 + row["population"]),
        ],
    )
    assert target.schema == {
        "fields": [
            {
                "name": "id",
                "type": "integer"
            },
            {
                "name": "name",
                "type": "string"
            },
            {
                "name": "population",
                "type": "integer"
            },
            {
                "name": "calc"
            },
        ]
    }
    assert target.read_rows() == [
        {
            "id": 1,
            "name": "germany",
            "population": 83,
            "calc": 183
        },
        {
            "id": 2,
            "name": "france",
            "population": 66,
            "calc": 266
        },
        {
            "id": 3,
            "name": "spain",
            "population": 47,
            "calc": 347
        },
    ]
Ejemplo n.º 2
0
def test_step_field_add():
    source = Resource(path="data/transform.csv")
    target = transform(
        source,
        steps=[
            steps.field_add(name="note", type="string", value="eu"),
        ],
    )
    assert target.schema == {
        "fields": [
            {
                "name": "id",
                "type": "integer"
            },
            {
                "name": "name",
                "type": "string"
            },
            {
                "name": "population",
                "type": "integer"
            },
            {
                "name": "note",
                "type": "string"
            },
        ]
    }
    assert target.read_rows() == [
        {
            "id": 1,
            "name": "germany",
            "population": 83,
            "note": "eu"
        },
        {
            "id": 2,
            "name": "france",
            "population": 66,
            "note": "eu"
        },
        {
            "id": 3,
            "name": "spain",
            "population": 47,
            "note": "eu"
        },
    ]
Ejemplo n.º 3
0
def test_step_field_add_with_incremental():
    source = Resource(path="data/transform.csv")
    target = transform(
        source,
        steps=[
            steps.field_add(name="number", incremental=True),
        ],
    )
    assert target.schema == {
        "fields": [
            {
                "name": "number"
            },
            {
                "name": "id",
                "type": "integer"
            },
            {
                "name": "name",
                "type": "string"
            },
            {
                "name": "population",
                "type": "integer"
            },
        ]
    }
    assert target.read_rows() == [
        {
            "number": 1,
            "id": 1,
            "name": "germany",
            "population": 83
        },
        {
            "number": 2,
            "id": 2,
            "name": "france",
            "population": 66
        },
        {
            "number": 3,
            "id": 3,
            "name": "spain",
            "population": 47
        },
    ]