{
  "type": "record",
  "Aspect": {
    "name": "dataHubMetricCubeDefinition"
  },
  "name": "DataHubMetricCubeDefinition",
  "namespace": "com.linkedin.pegasus2avro.metric",
  "fields": [
    {
      "Searchable": {},
      "type": "string",
      "name": "name",
      "doc": " Display name of the metric cube"
    },
    {
      "Searchable": {},
      "type": "string",
      "name": "type",
      "default": "custom",
      "doc": "A type or category for the metric cube. This is used to categorize the metric cube & for filtering.\n\nThis may be used to group similar types of metrics for a given entity, e.g. 'row_count', 'error_count', etc.\nthat originated in different places."
    },
    {
      "type": [
        "null",
        "string"
      ],
      "name": "description",
      "default": null,
      "doc": " Optional description for the metric"
    },
    {
      "Searchable": {},
      "java": {
        "class": "com.linkedin.pegasus2avro.common.urn.Urn"
      },
      "type": [
        "null",
        "string"
      ],
      "name": "entity",
      "default": null,
      "doc": " An optional URN for the entity that this metric cube is associated with.",
      "Urn": "Urn"
    },
    {
      "type": {
        "type": "record",
        "name": "DataHubMetricCubeOrigin",
        "namespace": "com.linkedin.pegasus2avro.metric",
        "fields": [
          {
            "Searchable": {
              "addToFilters": true,
              "fieldName": "originType",
              "filterNameOverride": "Origin"
            },
            "type": {
              "type": "enum",
              "symbolDocs": {
                "ASSERTION_MONITOR": "Assertion monitor created the metric.",
                "MANUAL": "Manually created metric, via UI or API."
              },
              "name": "DataHubMetricSourceType",
              "namespace": "com.linkedin.pegasus2avro.metric",
              "symbols": [
                "MANUAL",
                "ASSERTION_MONITOR"
              ]
            },
            "name": "type",
            "doc": "Message associated with the incident"
          },
          {
            "Searchable": {
              "fieldType": "URN"
            },
            "java": {
              "class": "com.linkedin.pegasus2avro.common.urn.Urn"
            },
            "type": [
              "null",
              "string"
            ],
            "name": "originUrn",
            "default": null,
            "doc": "Reference to the source that created the metric.\nIn the case of assertion monitor, this is the URN of the assertion monitor.",
            "Urn": "Urn"
          }
        ],
        "doc": "Information about the origin of the metric cube"
      },
      "name": "origin",
      "doc": "The origin of the metric cube."
    },
    {
      "type": [
        "null",
        {
          "type": "record",
          "name": "DataHubMetricCubeMeasures",
          "namespace": "com.linkedin.pegasus2avro.metric",
          "fields": [
            {
              "type": {
                "type": "record",
                "name": "DataHubMetricCubeMeasure",
                "namespace": "com.linkedin.pegasus2avro.metric",
                "fields": [
                  {
                    "type": "string",
                    "name": "name",
                    "doc": " The name of the measure"
                  }
                ],
                "doc": "The definition of a metric cube measure."
              },
              "name": "measure",
              "doc": " The first measure being tracked in the cube."
            }
          ],
          "doc": "The definition of the measures of a metric cube.\nA measure is a metric that is being tracked in the cube."
        }
      ],
      "name": "measures",
      "default": null,
      "doc": " Optional - The measures of the cube for display purposes."
    },
    {
      "type": [
        "null",
        {
          "type": "record",
          "name": "DataHubMetricCubeDimensions",
          "namespace": "com.linkedin.pegasus2avro.metric",
          "fields": [
            {
              "type": [
                "null",
                {
                  "type": "record",
                  "name": "DataHubMetricCubeDimension",
                  "namespace": "com.linkedin.pegasus2avro.metric",
                  "fields": [
                    {
                      "type": "string",
                      "name": "name",
                      "doc": " The name of the dimension"
                    }
                  ],
                  "doc": "The definition of a metric cube dimension."
                }
              ],
              "name": "dim1",
              "default": null,
              "doc": " The first measure being tracked in the cube."
            },
            {
              "type": [
                "null",
                "com.linkedin.pegasus2avro.metric.DataHubMetricCubeDimension"
              ],
              "name": "dim2",
              "default": null,
              "doc": "Optional: A second measure being tracked in the cube."
            },
            {
              "type": [
                "null",
                "com.linkedin.pegasus2avro.metric.DataHubMetricCubeDimension"
              ],
              "name": "dim3",
              "default": null,
              "doc": "Optional: A third measure being tracked in the cube."
            }
          ],
          "doc": "The dimensions of the cube. This is what you filter and group by.\nThis is a record to allow for future expansion of the dimensions."
        }
      ],
      "name": "dimensions",
      "default": null,
      "doc": "Optional - The dimensions of the cube for display purposes."
    }
  ],
  "doc": "The structure of an individual metric cube in DataHub."
}