1"use strict";(globalThis.webpackChunkrekalogika_docs=globalThis.webpackChunkrekalogika_docs||[]).push([[1086],{3021:(e,n,t)=>{t.d(n,{A:()=>b});var r=t(6540),i=t(4164),s=t(6972),a=t(8774),c=t(4586);const o=["zero","one","two","few","many","other"];function l(e){return o.filter(n=>e.includes(n))}const u={locale:"en",pluralForms:l(["one","other"]),select:e=>1===e?"one":"other"};function d(){const{i18n:{currentLocale:e}}=(0,c.A)();return(0,r.useMemo)(()=>{try{return function(e){const n=new Intl.PluralRules(e);return{locale:e,pluralForms:l(n.resolvedOptions().pluralCategories),select:e=>n.select(e)}}(e)}catch(n){return console.error(`Failed to use Intl.PluralRules for locale "${e}".\nDocusaurus will fallback to the default (English) implementation.\nError: ${n.message}\n`),u}},[e])}function m(){const e=d();return{selectMessage:(n,t)=>function(e,n,t){const r=e.split("|");if(1===r.length)return r[0];r.length>t.pluralForms.length&&console.error(`For locale=${t.locale}, a maximum of ${t.pluralForms.length} plural forms are expected (${t.pluralForms.join(",")}), but the message contains ${r.length}: ${e}`);const i=t.select(n),s=t.pluralForms.indexOf(i);return r[Math.min(s,r.length-1)]}(t,n,e)}}var h=t(6654),f=t(1312),p=t(1107);const g={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};var y=t(4848);function x({className:e,href:n,children:t}){return(0,y.jsx)(a.A,{href:n,className:(0,i.A)("card padding--lg",g.cardContainer,e),children:t})}function j({className:e,href:n,icon:t,title:r,description:s}){return(0,y.jsxs)(x,{href:n,className:e,children:[(0,y.jsxs)(p.A,{as:"h2",className:(0,i.A)("text--truncate",g.cardTitle),title:r,children:[t," ",r]}),s&&(0,y.jsx)("p",{className:(0,i.A)("text--truncate",g.cardDescription),title:s,children:s})]})}function k({item:e}){const n=(0,s.Nr)(e),t=function(){const{selectMessage:e}=m();return n=>e(n,(0,f.T)({message:"1 item|{count} items",id:"theme.docs.DocCard.categoryDescription.plurals",description:"The default description for a category card in the generated index about how many items this category includes"},{count:n}))}();return n?(0,y.jsx)(j,{className:e.className,href:n,icon:"\ud83d\uddc3\ufe0f",title:e.label,description:e.description??t(e.items.length)}):null}function N({item:e}){const n=(0,h.A)(e.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",t=(0,s.cC)(e.docId??void 0);return(0,y.jsx)(j,{className:e.className,href:e.href,icon:n,title:e.label,description:e.description??t?.description})}function v({item:e}){switch(e.type){case"link":return(0,y.jsx)(N,{item:e});case"category":return(0,y.jsx)(k,{item:e});default:throw new Error(`unknown item type ${JSON.stringify(e)}`)}}const w={docCardListItem:"docCardListItem_W1sv"};function A({className:e}){const n=(0,s.a4)();return(0,y.jsx)(b,{items:n,className:e})}function C({item:e}){return(0,y.jsx)("article",{className:(0,i.A)(w.docCardListItem,"col col--6"),children:(0,y.jsx)(v,{item:e})})}function b(e){const{items:n,className:t}=e;if(!n)return(0,y.jsx)(A,{...e});const r=(0,s.d1)(n);return(0,y.jsx)("section",{className:(0,i.A)("row",t),children:r.map((e,n)=>(0,y.jsx)(C,{item:e},n))})}},5059:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>m,frontMatter:()=>c,metadata:()=>r,toc:()=>u});const r=JSON.parse('{"id":"analytics/dimension-hierarchy/index","title":"Dimension Hierarchy","description":"A dimension hierarchy is a way to organize dimensions in a hierarchical","source":"@site/docs/analytics/07-dimension-hierarchy/index.md","sourceDirName":"analytics/07-dimension-hierarchy","slug":"/analytics/dimension-hierarchy/","permalink":"/analytics/dimension-hierarchy/","draft":false,"unlisted":false,"editUrl":"https://github.com/rekalogika/rekalogika-docs/edit/main/docs/analytics/07-dimension-hierarchy/index.md","tags":[],"version":"current","frontMatter":{"title":"Dimension Hierarchy"},"sidebar":"docs","previous":{"title":"Creating Aggregate Functions","permalink":"/analytics/aggregate-function/creating-aggregate-functions"},"next":{"title":"Structure","permalink":"/analytics/dimension-hierarchy/structure"}}');var i=t(4848),s=t(8453),a=t(3021);const c={title:"Dimension Hierarchy"},o=void 0,l={},u=[{value:"Sections",id:"sections",level:2}];function d(e){const n={h2:"h2",p:"p",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"A dimension hierarchy is a way to organize dimensions in a hierarchical\nstructure. For example, you can have a hierarchy of time dimensions, where each\nlevel represents a different granularity of time, such as year, month, and day."}),"\n",(0,i.jsx)(n.p,{children:"In Analytics, a hierarchy of dimensions is modeled using Doctrine embeddable."}),"\n","\n",(0,i.jsx)(n.h2,{id:"sections",children:"Sections"}),"\n",(0,i.jsx)(a.A,{})]})}function m(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>c});var r=t(6540);const i={},s=r.createContext(i);function a(e){const n=r.useContext(s);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.