{
  "category": "Cubes",
  "display_name": "CUBEMEMBERPROPERTY",
  "entry_kind": "built_in_function",
  "eval_api": {
    "method": "POST",
    "url": "https://handbook.dnacalc.com/api/eval"
  },
  "function_id": "FUNC.CUBEMEMBERPROPERTY",
  "implementation_state": {
    "answer_bank": null,
    "detail": "No catalogue row at this commit. Pivot tables are being implemented in full, and this function with them.",
    "dnacalc_commit": "9e1884369a678158dd82d3d74188daf986995e87",
    "in_catalogue": false,
    "state": "refuses",
    "state_label": "Refuses or not implemented",
    "summary": "Not yet implemented",
    "workbook_corpus": null
  },
  "implementations": [],
  "json_url": "https://handbook.dnacalc.com/api/functions/FUNC.CUBEMEMBERPROPERTY.json",
  "name": "CUBEMEMBERPROPERTY",
  "notes": [],
  "schema": "efh.function-reference/v1",
  "section_order": [
    "what-it-does",
    "try-it",
    "quirks",
    "how-to-implement",
    "version-differences",
    "alternatives"
  ],
  "sections": {
    "alternatives": "\n### Relationships\n\n\n- **`CUBEMEMBER`** — the sibling that returns the member itself rather than one of its\n  attributes. `CUBEMEMBERPROPERTY` is what you reach for once `CUBEMEMBER` has confirmed the\n  member exists.\n- **`CUBEVALUE`** — the measure-returning counterpart. The property/measure distinction above\n  is the whole reason both exist.\n- **`CUBEKPIMEMBER`** — also returns a component of a cube object, but a KPI component is a\n  *member expression* usable as a coordinate, whereas a member property is a terminal value.\n  The two look similar in a formula and behave quite differently downstream.\n\nReaders confuse member properties with PivotTable \"Show Details\" fields and with\n`GETPIVOTDATA`. `GETPIVOTDATA` reads from a PivotTable rendered on a sheet;\n`CUBEMEMBERPROPERTY` reads cube metadata with no PivotTable involved.\n\n\n",
    "how-to-implement": "\n### Notes for implementers\n\n\n- There is no kernel. The function is a metadata request; the whole of its behaviour is\n  connection resolution, MDX member resolution, and property lookup in the cube schema.\n- The return kind is not fixed by the function. An implementation that always returns text will\n  diverge on date- and number-valued properties, and the divergence will only show up in\n  downstream arithmetic.\n- The Power Pivot exclusion is a capability boundary, not a bug: an implementation backed by a\n  tabular model has no member properties to return and must decide, explicitly, what to do.\n- `property` accepting either a literal or a cell reference is ordinary argument handling, but\n  the cell-reference form is how workbooks parameterize property choice from a dropdown; an\n  implementation must resolve it as a plain value, unlike the family's identity-bearing\n  arguments.\n\n\n",
    "quirks": "\n### Result and edge cases\n\n\nThe result is whatever the property holds — commonly text, but a property may equally be a date\nor a number, so a workbook should not assume a return kind. There is no documented coercion or\nformatting step; the value arrives as the cube supplies it.\n\nWhile the request is outstanding the cell displays `#GETTING_DATA…` — a transient\nextended-family placeholder catalogued in [the value universe](../model/01-value-universe.md),\nnot a failure.\n\n**Power Pivot data models are out of scope, and the documentation says so.** Microsoft states\nthat this function does not work with Excel Data Models edited in Power Pivot, because those\nare not multidimensional cubes. This is worth flagging loudly: much of what users call \"the\ncube\" in a modern workbook is a tabular Data Model, and other CUBE functions do work against\nit. `CUBEMEMBERPROPERTY` is the family member that draws the line.\n\n\n\n### Errors\n\n\nAs documented by Microsoft on the page linked below:\n\n- **`#NAME?`** — the connection name is not a valid workbook connection; or the OLAP server is\n  not running, not available, or returns an error message.\n- **`#N/A`** — the `member_expression` syntax is incorrect, or the member it names does not\n  exist in the cube; or the expression refers to a session-scoped calculated member or named\n  set whose PivotTable has been deleted or converted to formulas.\n\nThe documentation does not state what happens when the *member* is valid but the *property*\nname is not. That is the obvious asymmetry in the error list — two of the three arguments have\ndocumented failure modes and the third does not — and it is listed as a probe below.\n\n\n",
    "sources": "- Microsoft, \"CUBEMEMBERPROPERTY function\" —\n  <https://support.microsoft.com/en-us/office/cubememberproperty-function-001e57d6-b35a-49e5-abcd-05ff599e8951>\n  (syntax, all three arguments, the `#GETTING_DATA` remark, the `#NAME?` and `#N/A` conditions,\n  and the statement that the function does not work with Excel Data Models edited in Power\n  Pivot).\n- Microsoft, \"CUBEVALUE function\" —\n  <https://support.microsoft.com/en-us/office/cubevalue-function-8733da24-26d1-4e34-9b3a-84a8f00dcbe0>\n  (the measure semantics contrasted above, and the documented null handling referenced in the\n  probe list).\n- Handbook `data/presence/FUNC.CUBEMEMBERPROPERTY.json` — no implementation module, no dispatch\n  entry.\n- Handbook `content/model/01-value-universe.md` — the extended error-code family.\n\n",
    "version-differences": "No comparison between specific Excel builds is recorded here yet. This does not establish that all builds behave alike.",
    "what-it-does": "\n`CUBEMEMBERPROPERTY` reads an *attribute* of a cube member — not a measure, not an aggregate,\nbut a piece of descriptive data hanging off the member itself: a product's colour, a store's\ncity, an employee's hire date.\n\n\nGiven a connection, an MDX expression naming a member, and a property name, the function\nreturns the value of that property for that member. Microsoft's description pairs it with a\nvalidation role, as it does for `CUBEMEMBER`: \"use to validate that a member name exists within\nthe cube and to return the specified property for this member.\"\n\nThe distinction that matters is **property versus measure**, and it is the reason this function\nexists alongside `CUBEVALUE`:\n\n- A **measure** is a number the cube aggregates over the dimensions you did not pin. Retrieved\n  with `CUBEVALUE`. Adding a second product to the slice changes the answer.\n- A **member property** is a fixed attribute of one member. Retrieved with\n  `CUBEMEMBERPROPERTY`. It does not aggregate, does not depend on any other dimension, and has\n  no meaning for a set — only for a single member.\n\nIf you find yourself wanting the property \"of a set\", the model is telling you to use\n`CUBERANKEDMEMBER` (or `CUBESET` plus iteration) to get down to one member first.\n\nWhich properties exist is a fact about the cube's schema, not about Excel. There is no closed\nlist, and a property name that works against one cube is meaningless against another.\n\n\n\n### Arguments\n\n\n`CUBEMEMBERPROPERTY(connection, member_expression, property)`\n\nAll three are required; there is no optional `caption` here, unlike `CUBEMEMBER` and\n`CUBERANKEDMEMBER` — the result is a property value, not a member, so there is no caption to\noverride.\n\n- **`connection`** (required) — text; the name of a connection stored in the workbook, used as\n  a lookup key rather than as a connection string.\n- **`member_expression`** (required) — text holding an MDX expression naming *a member* within\n  the cube. Note the narrowing relative to `CUBEMEMBER`, whose corresponding argument also\n  accepts a tuple: a property belongs to one member.\n- **`property`** (required) — text naming the property, or a reference to a cell containing\n  that name. This is the argument readers misjudge: it is a schema-level identifier from the\n  cube's own metadata, not a display label and not something Excel validates in advance.\n\n\n"
  },
  "signature": {
    "display": "CUBEMEMBERPROPERTY(connection, member_expression, property)",
    "parameters": [
      {
        "description": null,
        "name": "connection",
        "optional": false,
        "repeats": false
      },
      {
        "description": null,
        "name": "member_expression",
        "optional": false,
        "repeats": false
      },
      {
        "description": null,
        "name": "property",
        "optional": false,
        "repeats": false
      }
    ],
    "trailing_repeats": false
  },
  "sources": {
    "metadata": {
      "admission": {
        "label": "not_implemented",
        "reason": "No catalogue row at this commit. Pivot tables are being implemented in full, and this function with them."
      },
      "arity": {
        "max": 3,
        "min": 3
      },
      "category": "Cubes",
      "classification": {},
      "descriptions": {
        "long": null,
        "short": "A property of a member of an OLAP cube",
        "short_source": "dna-calc-own"
      },
      "docs": {
        "english_description": "Returns the value of a member property from the cube. Use to validate that a member name exists within the cube and to return the specified property for this member.",
        "microsoft_url": "https://support.microsoft.com/en-us/office/cubememberproperty-function-001e57d6-b35a-49e5-abcd-05ff599e8951"
      },
      "entry_kind": "built_in_function",
      "localized_family_names": null,
      "localized_names": [
        {
          "locale": "ar-SA",
          "name": "CUBEMEMBERPROPERTY"
        },
        {
          "locale": "bg-BG",
          "name": "CUBEMEMBERPROPERTY"
        },
        {
          "locale": "cs-CZ",
          "name": "CUBEMEMBERPROPERTY"
        },
        {
          "locale": "da-DK",
          "name": "KUBEMEDLEM.EGENSKAB"
        },
        {
          "locale": "de-DE",
          "name": "CUBEMEMBERPROPERTY"
        },
        {
          "locale": "el-GR",
          "name": "CUBEMEMBERPROPERTY"
        },
        {
          "locale": "en-AU",
          "name": "CUBEMEMBERPROPERTY"
        },
        {
          "locale": "en-GB",
          "name": "CUBEMEMBERPROPERTY"
        },
        {
          "locale": "en-US",
          "name": "CUBEMEMBERPROPERTY"
        },
        {
          "locale": "es-ES",
          "name": "PROPIEDADMIEMBROCUBO"
        },
        {
          "locale": "et-EE",
          "name": "CUBEMEMBERPROPERTY"
        },
        {
          "locale": "fi-FI",
          "name": "KUUTIONJÄSENENOMINAISUUS"
        },
        {
          "locale": "fr-FR",
          "name": "PROPRIETEMEMBRECUBE*"
        },
        {
          "locale": "he-IL",
          "name": "CUBEMEMBERPROPERTY"
        },
        {
          "locale": "hr-HR",
          "name": "CUBEMEMBERPROPERTY"
        },
        {
          "locale": "hu-HU",
          "name": "KOCKA.TAG.TUL"
        },
        {
          "locale": "id-ID",
          "name": "CUBEMEMBERPROPERTY"
        },
        {
          "locale": "it-IT",
          "name": "CUBEMEMBERPROPERTY"
        },
        {
          "locale": "ja-JP",
          "name": "CUBEMEMBERPROPERTY"
        },
        {
          "locale": "ko-KR",
          "name": "CUBEMEMBERPROPERTY"
        },
        {
          "locale": "lt-LT",
          "name": "CUBEMEMBERPROPERTY"
        },
        {
          "locale": "lv-LV",
          "name": "CUBEMEMBERPROPERTY"
        },
        {
          "locale": "nb-NO",
          "name": "KUBEMEDLEMEGENSKAP"
        },
        {
          "locale": "nl-NL",
          "name": "KUBUSLIDEIGENSCHAP"
        },
        {
          "locale": "pl-PL",
          "name": "WŁAŚCIWOŚĆ.ELEMENTU.MODUŁU"
        },
        {
          "locale": "pt-BR",
          "name": "CUBEMEMBERPROPERTY"
        },
        {
          "locale": "pt-PT",
          "name": "PROPRIEDADEMEMBROCUBO"
        },
        {
          "locale": "ro-RO",
          "name": "CUBEMEMBERPROPERTY"
        },
        {
          "locale": "ru-RU",
          "name": "КУБСВОЙСТВОЭЛЕМЕНТА"
        },
        {
          "locale": "sk-SK",
          "name": "CUBEMEMBERPROPERTY"
        },
        {
          "locale": "sl-SI",
          "name": "CUBEMEMBERPROPERTY"
        },
        {
          "locale": "sr-Latn-RS",
          "name": "CUBEMEMBERPROPERTY"
        },
        {
          "locale": "sv-SE",
          "name": "KUBMEDLEMSEGENSKAP"
        },
        {
          "locale": "th-TH",
          "name": "CUBEMEMBERPROPERTY"
        },
        {
          "locale": "tr-TR",
          "name": "KÜPÜYEÖZELLİĞİ işlevi"
        },
        {
          "locale": "uk-UA",
          "name": "CUBEMEMBERPROPERTY"
        },
        {
          "locale": "vi-VN",
          "name": "CUBEMEMBERPROPERTY"
        },
        {
          "locale": "zh-CN",
          "name": "CUBEMEMBERPROPERTY"
        },
        {
          "locale": "zh-HK",
          "name": "CUBEMEMBERPROPERTY"
        },
        {
          "locale": "zh-TW",
          "name": "CUBEMEMBERPROPERTY"
        }
      ],
      "signature": {
        "display": "CUBEMEMBERPROPERTY(connection, member_expression, property)",
        "parameters": [
          {
            "description": null,
            "name": "connection",
            "optional": false,
            "repeats": false
          },
          {
            "description": null,
            "name": "member_expression",
            "optional": false,
            "repeats": false
          },
          {
            "description": null,
            "name": "property",
            "optional": false,
            "repeats": false
          }
        ],
        "trailing_repeats": false
      },
      "surface_name": "CUBEMEMBERPROPERTY",
      "version_marker": null,
      "xlcall": {
        "code": "382",
        "symbol": "xlfCubememberproperty"
      }
    },
    "microsoft": "https://support.microsoft.com/en-us/office/cubememberproperty-function-001e57d6-b35a-49e5-abcd-05ff599e8951"
  },
  "try_it": {
    "formula": "=CUBEMEMBERPROPERTY(\"ThisWorkbookDataModel\",\"[Product].[All Products]\",\"Caption\")",
    "note": "This example needs an Excel cube connection. OneCalc cannot provide that connection in this preview.",
    "preview_status": "refused"
  },
  "url": "https://handbook.dnacalc.com/functions/CUBEMEMBERPROPERTY.html",
  "variants": [],
  "versions": []
}