Untitled

 avatar
unknown
plain_text
13 days ago
15 kB
3
Indexable
{
    "type": "object",
    "definitions": {
        "transformationParameters": {
            "repartition": {
                "type": "object",
                "properties": {
                    "numPartitions": { 
                        "type": "integer",
                        "minimum": 1
                    },
                    "columns": {
                        "type": "array",
                        "items": { "type": "string" },
                        "default": []
                    }
                },
                "required": ["numPartitions", "columns"],
                "not":{ "required": ["where", "sql"] },
                "additionalProperties": false
            },
            "sql": {
                "type": "object",
                "properties": {
                    "sql": { "type": "string" }
                },
                "required": ["sql"],
                "additionalProperties": false
            },
            "filter": {
                "type": "object",
                "properties": {
                    "where": { "type": "string" }
                },
                "required": ["where"],
                "not":{ "required": ["numPartitions", "sql"] },
                "additionalProperties": false
            },
            "expression_columns": {
                "type": "object",
                "properties": {
                    "expression": { "type": "string" },
                    "outputColumn": { "type": "string" },
                    "not":{ "required": ["inputColumn"]}

                },
                "required": ["expression", "outputColumn"],
                "additionalProperties": false
            },
            "pattern_validation": {
                "type": "object",
                "properties": {
                    "outputColumn": { "type": "string" },
                    "inputColumn": { "type": "string" },
                    "expression": { "type": "string" }
                },
                "required": ["outputColumn", "inputColumn", "expression"],
                "additionalProperties": false
            },
            "coalesce": {
                "type": "object",
                "properties": {
                    "numPartitions": { "type": "integer" },
                    "not":{ "required": ["columns", "sql", "where"]}
                },
                "required": ["numPartitions"],
                "additionalProperties": false
            },
            "transform_to_schema": {
                "type": "object",
                "properties": {
                    "cols_to_payload": {"type": "object"},
                    "event_store_schema": {"type": "string"},
                    "default_substitution": {"type": "object"}
                },
                "required": ["cols_to_payload", "event_store_schema"],
                "additionalProperties": false
            },
            "rename_columns": {
                "type": "object",
                "properties": {
                    "inputColumn": {"type": "string"},
                    "outputColumn": {"type":  "string"}
                },
                "required": ["inputColumn", "outputColumn"],
                "additionalProperties": false
            },
            "drop_columns": {
                "type": "object",
                "properties": {
                    "columns": {"type":  "array", "items": {"type": "string"}}
                },
                "required": ["columns"],
                "additionalProperties": false
            },
            "key_gen": {
                "type": "object",
                "properties": {
                    "outputColumn": {"type":  "string"}
                },
                "required": ["outputColumn"],
                "additionalProperties": false
            },
            "null_validation": {
                "type": "object",
                "properties": {
                    "inputColumn": {"type":  "string"},
                    "outputColumn": {"type":  "string"}
                },
                "required": ["inputColumn","outputColumn"],
                "additionalProperties": false
            },
            "range_validation": {
                "type": "object",
                "properties": {
                    "inputColumn": {"type":  "string"},
                    "outputColumn": {"type":  "string"}
                },
                "required": ["inputColumn","outputColumn"],
                "additionalProperties": false
            },
            "datetime_validation": {
                "type": "object",
                "properties": {
                    "inputColumn": {"type":  "string"},
                    "outputColumn": {"type":  "string"},
                    "expression": {"type": "string"}
                },
                "required": ["inputColumn","outputColumn", "expression"],
                "additionalProperties": false
            },
            "duplicate_validation": {
                "type": "object",
                "properties": {
                    "outputColumn": {"type":  "string"},
                    "partitionBy": {"type":  "array", "items": {"type": "string"}}
                },
                "required": ["outputColumn", "partitionBy"],
                "additionalProperties": false
            },
            "duplicate_validation_with_order_by": {
                "type": "object",
                "properties": {
                    "outputColumn": {"type":  "string"},
                    "partitionBy": {"type":  "array", "items": {"type": "string"}},
                    "orderBy": {"type":  "array", "items": {"type": "string"}}
                },
                "required": ["outputColumn", "partitionBy", "orderBy"],
                "additionalProperties": false
            },
            "decode_avro": {
                "type": "object",
                "properties": {
                    "schema_registry": {"type":  "object"},
                    "avro_schemas": {"type": "object"},
                    "avro_reader_schema_id": {"type": "integer"},
                    "avro_value_col": {"type": "string"}
                },
                "required": [],
                "additionalProperties": false
            },
            "encode_avro": {
                "type": "object",
                "properties": {
                    "schema_registry": {"type":  "object"},
                    "avro_schemas": {"type": "object"},
                    "avro_reader_schema_id": {"type": "integer"},
                    "cols_to_encode": {"type":  "array", "items": {"type": "string"}},
                    "avro_value_col": {"type": "string"}
                },
                "required": [],
                "additionalProperties": false
            },
            "join": {
                "type": "object",
                "properties": {
                    "right_table": {"type":  "string"},
                    "expression": {"type": "string"},
                    "join_type": {"type": "string"},
                    "leftWatermark": {"type": "object"},
                    "rightWatermark": {"type": "object"},
                    "columns": {"type":  "array", "items": {"type": "string"}}
                },
                "required": ["rightTable", "expression"],
                "additionalProperties": false
            }
        }
    },
    "properties": {
        "category": {
            "type": "string"
        },
        "subject": {
            "type": "string"
        },
        "version": {
            "type": "string"
        },
        "runtime": {
            "type": "object",
            "properties": {
                "security": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    }
                },
                "parameters": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    }
                }
            }
        },
        "sources": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "sequence": {
                        "type": "number"
                    },
                    "name": {
                        "type": "string"
                    },
                    "stream": {
                        "type": "boolean",
                        "default": "False"
                    },
                    "createView": {
                        "type": "boolean",
                        "default": "True"
                    },
                    "format": {
                        "type": "string",
                        "enum": [
                            "csv",
                            "orc",
                            "json",
                            "kafka",
                            "jdbc",
                            "xml",
                            "bigquery",
                            "parquet",
                            "avro",
                            "rate",
                            "cobol"
                        ]
                    }
                },
                "required": [
                    "name",
                    "sequence",
                    "stream",
                    "format",
                    "options"
                ]
            }
        },
        "transformers": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "sequence": {
                        "type": "number"
                    },
                    "name": {
                        "type": "string"
                    },
                    "createView": {
                        "type": "boolean",
                        "default": "True"
                    },
                    "from": {
                        "type": "string"
                    },
                    "transformation": {
                        "type": "string",
                        "enum": [
                            "coalesce",
                            "repartition",
                            "filter",
                            "sql",
                            "rename_columns",
                            "drop_columns",
                            "expression_columns",
                            "key_gen",
                            "null_validation",
                            "range_validation",
                            "pattern_validation",
                            "datetime_validation",
                            "duplicate_validation",
                            "duplicate_validation_with_order_by",
                            "exclusion",
                            "decode_avro",
                            "encode_avro",
                            "join"
                        ]
                    },
                    "parameters": {
                        "type": "array",
                        "items": {
                            "oneOf": [
                                { "$ref": "#/definitions/transformationParameters/repartition" },
                                { "$ref": "#/definitions/transformationParameters/filter" },
                                { "$ref": "#/definitions/transformationParameters/sql" },
                                { "$ref": "#/definitions/transformationParameters/expression_columns" },
                                { "$ref": "#/definitions/transformationParameters/pattern_validation" },
                                { "$ref": "#/definitions/transformationParameters/coalesce" },
                                { "$ref": "#/definitions/transformationParameters/transform_to_schema" },
                                { "$ref": "#/definitions/transformationParameters/rename_columns" },
                                { "$ref": "#/definitions/transformationParameters/drop_columns" },
                                { "$ref": "#/definitions/transformationParameters/key_gen" },
                                { "$ref": "#/definitions/transformationParameters/null_validation" },
                                { "$ref": "#/definitions/transformationParameters/range_validation" },
                                { "$ref": "#/definitions/transformationParameters/datetime_validation" },
                                { "$ref": "#/definitions/transformationParameters/duplicate_validation" },
                                { "$ref": "#/definitions/transformationParameters/duplicate_validation_with_order_by" },
                                { "$ref": "#/definitions/transformationParameters/decode_avro" },
                                { "$ref": "#/definitions/transformationParameters/encode_avro" },
                                { "$ref": "#/definitions/transformationParameters/join" }
                            ]
                        },
                        "minItems": 1,
                        "maxItems": 1
                    }
                },
                "required": [
                    "name",
                    "sequence",
                    "parameters",
                    "from",
                    "transformation"
                ],
                "additionalProperties": false
            },
            "default": []
        },
        "targets": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "sequence": {
                        "type": "number"
                    },
                    "name": {
                        "type": "string"
                    },
                    "from": {
                        "type": "string"
                    },
                    "format": {
                        "type": "string",
                        "enum": [
                            "csv",
                            "orc",
                            "json",
                            "kafka",
                            "jdbc",
                            "xml",
                            "bigquery",
                            "parquet",
                            "avro",
                            "console"
                        ]
                    }
                },
                "required": [
                    "name",
                    "sequence",
                    "from",
                    "format",
                    "options"
                ]
            }
        },
        "sqls": {
            "type": "object",
            "additionalProperties": {
                "type": "string"
            }
        }
    },
    "required": [
        "sources",
        "targets"
    ]
}
Leave a Comment