Avro - использовать тот же определенный тип для других атрибутов - PullRequest
0 голосов
/ 16 января 2020

Я пишу свою первую схему avro, и я хотел бы знать, как я могу использовать один и тот же определенный тип для нескольких атрибутов. Моя схема Avro имеет следующую структуру:

{
    "type": "record",
    "name": "hubspot-deals",
    "doc": "Avro schema to describe Hubspot Deals.",
    "namespace": "com.landoop",
    "fields": [
        {
            "name": "properties",
            "type": {
                "type": "record",
                "name": "Properties",
                "fields": [
                    {
                        "name": "createdate",
                        "type": {
                            "type": "record",                           
                            "name": "CustomProperty",
                            "fields": [
                                { "name": "source", "type": "string" },
                                { "name": "sourceId", "type": "string" },                               
                                {
                                    "name": "versions",
                                    "type": { "type": "array", "items": "CustomProperty" },
                                    "default": []
                                }
                            ]
                        }
                    },
                    { "name": "days_to_close", "type": "CustomProperty" }
                ]
            },
        }]
}

Как я могу использовать тип записи CustomProperty среди других атрибутов? Я использую python lib для проверки моей схемы. Я получил ошибку: The type [CustomProperty] is not recognized by Avro. Я также попытался добавить пространство имен, но получил ту же ошибку.

Как JSON пример:

    {
        'properties': {
            'createdate': {
                'source': 'AUTOMATION_PLATFORM',
                'sourceId': 'enrollmentId:13398489937;actionExecutionIndex:0',
                'timestamp': 1579120584600,
                'value': '1579120584600',
                'versions': []
            }
        }
    }
...