{
  "type": "record",
  "Aspect": {
    "name": "metricKey",
    "keyForEntity": "metric",
    "entityCategory": "core",
    "entityAspects": [
      "metricInfo",
      "metricRelationships",
      "metricUpstreams",
      "ownership",
      "domains",
      "globalTags",
      "glossaryTerms",
      "institutionalMemory",
      "structuredProperties",
      "status",
      "deprecation",
      "dataPlatformInstance",
      "subTypes",
      "documentation",
      "browsePathsV2",
      "applications"
    ]
  },
  "name": "MetricKey",
  "namespace": "com.linkedin.pegasus2avro.metadata.key",
  "fields": [
    {
      "Searchable": {
        "addToFilters": true,
        "enableAutocomplete": true,
        "fieldType": "URN",
        "filterNameOverride": "Platform"
      },
      "java": {
        "class": "com.linkedin.pegasus2avro.common.urn.Urn"
      },
      "type": "string",
      "name": "platform",
      "doc": "The data platform URN that owns this metric\n(e.g. urn:li:dataPlatform:dbt, urn:li:dataPlatform:snowflake).\n\nREQUIRED. This field is part of the metric URN and therefore\nimmutable once written. If the source platform is unknown at ingest\ntime the ingestion layer is responsible for assigning a stable\nfallback URN (e.g. urn:li:dataPlatform:datahub for native /\nSDK-authored metrics).",
      "Urn": "Urn"
    },
    {
      "Searchable": {
        "addToFilters": true,
        "fieldType": "TEXT_PARTIAL",
        "filterNameOverride": "Path"
      },
      "type": "string",
      "name": "path",
      "doc": "Namespace path that scopes this metric within its platform. Ingestors must set this to\nthe canonical container path for the metric so that two teams can define metrics with the\nsame `id` on the same platform without colliding."
    },
    {
      "type": "string",
      "name": "id",
      "doc": "Unique identifier for the metric within its platform and path."
    }
  ],
  "doc": "Key for a Metric"
}