Pull to refresh

XBRL: просто о сложном − Глава 5. Открывая новые измерения

Reading time 10 min
Views 7.8K
Original author: Jos van der Heiden, Batavia XBRL BV

5. Открывая новые измерения


Предыдущие главы показали вам, что такое XBRL, и что с его помощью можно сделать. Как вы уже знаете, он является расширяемым стандартом. В этой главе мы рассмотрим один из расширяющих стандартную спецификацию модулей – XBRL Dimensions (Измерения).


Глава основывается на спецификации XBRL Dimensions версии 1.0 CR от 19.06.2006. На момент написания книги спецификация находится в статусе Candidate Recommendation, но ожидается, что окончательный вариант не принесет никаких значительных сюрпризов.


Что касается самой спецификации XBRL, данная глава подчеркивает некоторые ее важные моменты, необходимые для уверенного базового понимания XBRL Dimensions. Остальные нюансы приведены в полной спецификации.


5.1. Введение


Обычно, факты в отчетах некоторым образом классифицируются, например:


  • Продажи в разных периодах;
  • Продажи по продуктовым линиям;
  • Продажи по регионам;
  • Продажи по отделам;
  • Количество сотрудников по возрасту;
  • Количество сотрудников по полу;
  • ...

Две из этих категорий явно определены спецификацией XBRL – период и составитель отчета (компания, департамент, отдел компании). Эти категории всегда присутствуют в контекстах, на которые ссылаются факты отчета.


Желание расширить эти возможности, чтобы позволить авторам таксономии указать свои собственные категории вроде продуктовой линии, пола и т.д., является вполне естественным. Это именно то, что позволяет сделать XBRL Dimensions. В этой спецификации такие категории называются измерениями (dimension).


Как определено в спецификации XBRL, входящие в контекст сценарий и сегмент могут иметь любое валидное XML-содержание. XBRL Dimensions определяет формализованный способ использования таких элементов для добавления новых измерений (категории) в контекст.


Пример, который мы ранее использовали, очень хорошо подходит для иллюстрации:
Нам лишь надо определить концепт nr_employees и пару измерений: gender (пол) со значениями {‘men’, ‘women’} и age group (возрастная группа) со значениями {‘...–20’, ‘21–40’, ‘41–…’}.

Отчет содержит набор контекстов для каждого сочетания периода и измерения, и каждому контексту соответствует свой факт:
Контекст Факт
01-01-2015 nr_employees = 35
01-01-2015 + ‘men’ nr_employees = 23
01-01-2015 + ‘women’ nr_employees = 12
01-01-2015 + ‘...–20’ nr_employees = 5
01-01-2015 + ‘21–40’ nr_employees = 23
01-01-2015 + ‘41–…’ nr_employees = 7
31-12-2015 nr_employees = 41
31-12-2015 + ‘men’ nr_employees = 27
31-12-2015 + ‘women’ nr_employees = 15
31-12-2015 + ‘...–20’ nr_employees = 9
31-12-2015 + ‘21–40’ nr_employees = 21
31-12-2015 + ‘41–…’ nr_employees = 11


5.1.1. Понятия измерений


Спецификация XBRL Dimensions использует ряд понятий, которые кратко представлены здесь и будут более подробно разобраны в следующем разделе.


  • Измерение (dimension)
    Измерение – это по сути категоризация фактов. Измерения определяются в Таксономии элементов домена (Domain Members Taxonomy, DMT), а ее элементы могут использоваться в контекстах отчета для категоризации передаваемых фактов.
  • Домен (domain) и Элементы домена (domain members)
    Набор допустимых значений измерения называется его доменом. Элемент домена – это одно из этих значений. Есть два типа элементов: типизированные (typed) и явные (explicit). Типизированные элементы определяются синтаксическими ограничениями, напр. «целые числа от 0 до 100». Явные элементы домена являются item-концептами, которые явно указываются элементами домена измерения. Получается перечисление элементов, напр. ‘men’ и ‘women’ для измерения gender.
  • Гиперкуб (hypercube)
    Измерения могут быть объединены, напр. «продажи по региону и продуктовой линии» или «количество сотрудников по полу и возрастной группе». Набор возможных значений такой комбинации измерений можно представить в виде элементов в n-мерном пространстве:
    • при n = 1 элементы образуют отрезок на прямой;
    • при n = 2 элементы образуют квадрат на плоскости;
    • при n = 3 элементы образуют куб в пространстве;
    • случаи n > 3 не так легко визуализировать, поскольку мы живем в трехмерном пространстве; математический термин для таких случаев – гиперкуб.
  • Первичная таксономия (primary taxonomy)
    Это обычная таксономия в соответствии со спецификацией XBRL. Она определяет концепты, по которым могут формироваться отчеты. Спецификация XBRL Dimensions берет на себя заботу о том, чтобы не требовалось никаких изменений в первичной таксономии.
  • Таксономия элементов домена (domain members taxonomy, DMT)
    Измерения и элементы измерений определяются как концепты DMT.
  • Таксономия шаблонов (template taxonomy)
    Объединяет первичную таксономию и таксономию элементов домена, определяя структуру гиперкубов и связывая их с первичными концептами.

Спецификация определяет три типа таксономий. Это разделение на три типа – лишь концепция. Можно использовать три отдельные таксономии, но спецификация не требует использования отдельных таксономий для каждого из типов. Комбинировать разные типы в одной таксономии – совершенно нормально. Допустимо даже использовать концепт в качестве первичного концепта в одной взаимосвязи, и в качестве элемента измерения в другой.

5.2. Таксономии измерений


В этом разделе рассматривается способ расширения таксономий для применения спецификации XBRL Dimensions. Начну с архитектурной диаграммы, показывающей, как все компоненты связаны между собой.


image


Следующие подразделы описывают каждый компонент архитектуры более подробно.


5.2.1. Измерения


DMT определяет измерения как абстрактные item-концепты со значением xbrldt:dimensionItem атрибута substitution group.


Примечание: Атрибуты xbrli:balance, xbrli:periodType и nillable игнорируются.


Измерения могут быть типизированными или явными, как было сказано выше, в каждом из них используется свой способ определения элементов домена.


5.2.1.1. Типизированное измерение (typed dimension)

Определение типизированного домена должно иметь значение атрибута xbrldt:typedDomainRef, которое ссылается на объявление элемента, определяющего домен измерения.


Домен определяется с использованием типов XML Schema:


  • Тип SimpleType может, к примеру, определить в качестве идентификатора клиента компании значения от 0 до 100 в виде целого числа или строки длиной 5 символов;
  • Тип ComplexType может быть использован для определения адреса, включающего в себя город, улицу, номер дома, индекс и т.д.

5.2.1.2. Явное измерение (explicit dimension)

Домен явного измерения идентифицируется связью dimension-domain от измерения к корню сети связей domain-member между элементами домена. В явном измерении не может содержаться атрибут xbrldt:typedDomainRef.


Элементами домена измерения являются все qname-элементы в сети связей domain-member. Каждый элемент – это определение item-концепта со значением xbrli:item атрибута substitution group (он не может принадлежать к группе xbrldt:hypercubeItem или xbrldt:dimensionItem).


Связи domain-member образуют иерархию элементов. Можно добавлять элементы в иерархию, например, чтобы создать корень вложенной иерархии, который не предназначен для использования в качестве элемента домена. Для этого в булевом атрибуте usable, имеющего по умолчанию значение true, указывается значение false.


У явного измерения может быть указан элемент по умолчанию, это делается с помощью связи dimension-default к элементу домена. Это значение по умолчанию используется в контексте, если не задано ни одного элемента измерения. Само значение по умолчанию в не может быть явно указано в контексте, оно всегда определяется автоматически.


Обратите внимание, что связь dimension-default сама по себе не добавляет элемент в домен и не является эквивалентом связи domain-member.


5.2.2. Связи domain-member и наследование (inheritance)

Первичные концепты могут наследовать гиперкубы других первичных концептов путем указания связи domain-member между первичными концептами.


Предположим, у нас есть два первичных концепта, один из которых (item) связан с гиперкубом hc_age, а другой (another item) – связью domain-member с первым концептом:

image

Так как у первого концепта есть связь с измерением age_group через гиперкуб hc_age, а второй концепт имеет связь domain-member с первым концептом – второй концепт наследует измерение age_group.

5.2.3. Гиперкубы (hypercube)

Гиперкубы определяются в таксономии шаблонов (template taxonomy) путем объединения нуля (гиперкуб может быть пустым) и более измерений.


Объявляющий элемент является абстрактным концептом, который должен иметь значение xbrldt:hypercubeItem атрибута substitution group.


Измерения связываются с гиперкубом дугами с ролью hypercube-dimension. Эти отношения упорядочены значением атрибута order в каждой дуге. Дуги не могут образовывать циклических связей.


5.2.4. Связь первичных концептов с гиперкубами

При создании таксономии с измерениями вам захочется иметь возможность контролировать, с какими измерениями может быть связан каждый из концептов. Таксономия шаблонов обеспечивает такую возможность путем определения связей между гиперкубами и первичными концептами через связи has-hypercube между первичным концептом и концептом гиперкуба.


Есть два типа связей has-hypercubeall и notAll:


  • связь типа all используется для определения измерений (и элементов измерений), которые разрешены для концепта;
  • связь типа notAll используется для определения измерений (и элементов измерений), которые не разрешены.

Сочетание этих типов связей позволяет точно контролировать состав измерений и элементов измерений для каждого концепта.


Предположим, у нас есть два гиперкуба:

image

Первичный концепт со связью has-hypercube типа all с кубом hc_age_x_gender может иметь все элементы измерений gender и age_group. Если мы добавим к этому концепту связь типа notAll с гиперкубом hc_exclude, элемент ‘Female’ измерения gender и элемент ‘...–20’ измерения age_group станут ему недоступны.

Связь has-hypercube должна указывать, в какой части контекста должны быть определены измерения – segment или scenario, для этого предназначен атрибут contextElement:


  • значение segment используется для измерений, которые определяют часть организационной структуры формирующей отчет компании, напр. отдел, регион и т.д.;
  • значение scenario используется для измерений, не связанных с организационной структурой компании, таких как возрастная группа, продукт и т.д.

Чтобы указать, что концепту доступны только элементы внутри измерений гиперкуба, в необязательном булевом атрибуте closed связи has-hypercube указывается значение true. Этот атрибут применяется только к сегменту сценария в соответствии со значением атрибута contextElement в связи. Значением по умолчанию является false, которое оставляет сегмент или сценарий открытым.


5.2.5. Наборы взаимосвязей измерений (dimensional relationship sets, DRS)


Определенные в XBRL Dimensions взаимосвязи включаются в базы ссылок определений (definition linkbase). В соответствии со спецификацией XBRL, взаимосвязи группируются в сети в соответствии с их ролями. Это называют базовым набором взаимосвязей.


Спецификация XBRL Dimensions расширяет понятие базового набора путем введения атрибута targetRole для таких типов связей как all, notAll, hypercube-dimension, dimension-domain и domain-member. Атрибут targetRole ссылается на другую роль и определяет переход от базы ссылок в одном базовом наборе к базе ссылок в базовом наборе с указанной в атрибуте ролью. Набор таких сгруппированных взаимосвязей называется Набором взаимосвязей измерений, DRS.


Создание DRS может быть полезным и даже необходимым, когда таксономия измерений становится все более сложной. Без DRS вы скорее всего включите элементы в измерения, которым они не принадлежат или добавите измерения не в те гиперкубы. Вы можете запросто получить набор взаимосвязей, которые не имеют никакого смысла или могут даже оказаться противоречивыми и невалидными.


Этот механизм перехода от одной базы ссылок (роли) к другой делает процесс валидации таксономии или отчета намного более сложным, так как взаимосвязи существуют вне границ базовых наборов, как это определено в спецификации XBRL.

Спецификация XBRL Dimensions использует понятие последовательных взаимосвязей (consecutive relationship). Оно означает, что, например, элементы гиперкуба определяются сначала по взаимосвязи hypercube-dimension, а затем для всех найденных измерений – последовательно по каждой из связей domain-member.

Все последовательные взаимосвязи находятся в пределах одной роли баз ссылок, если не определено значение атрибута targetRole. Если же в дуге этот атрибут присутствует, то поиск взаимосвязей переходит в базу ссылок с указанной ролью. Последовательные взаимосвязи в исходной базе ссылок (роли) в этом случае отсутствуют.

Взаимосвязи, которые могут быть объединены как последовательные, ограничены тем, что вы бы логично ожидали – связи has-hypercube (all, notAll) могут иметь hypercube_dimension в качестве последовательных взаимосвязей, но не dimension_domain или domain_member, так как они пропускают связи.

5.3. Измерения в отчетах XBRL


Как говорилось во введении, измерения используются в сегменте или сценарии контекстов отчета. Выбор между ними производится с помощью атрибута contextElementType связи has-hypercube.


5.3.1. Типы элементов измерений


5.3.1.1. Типизированные элементы (typed member)


Для типизированных измерений значения указываются как дочерние элементы xbrldi:typedMember внутри сегмента или сценария. Атрибут dimension таких элементов должен ссылаться на определение типизированного измерения. Содержанием typedMember является элемент с типом как у измерения, указанного в атрибуте xbrldt:typedDomainRef. Значением для измерения является значение этого элемента.


Предположим, у нас есть измерение ageDim типа age с целочисленными значениями от 0 до (будем оптимистами) 150. Значение измерения 45 задается как дочерний элемент age внутри, к примеру, сегмента следующим образом:

<xbrldi:typedMember dimension=”d:ageDim”>
  <d:age>45</d:age>
</xbrldi:typedMember>


5.3.1.2. Явные элементы (explicit member)


Для явных измерений значения указываются с помощью элементов xbrldi:explicitMember. Атрибут dimension таких элементов должен ссылаться на определение явного измерения. Значением для измерения является содержание этого элемента и оно должно быть qname-элементом одного из явно определенных значений измерения.


Предположим, у нас есть измерение ageGroupDim со следующими явно определенными элементами: ageLessThan20, ageFrom21To40 и age41OrMore. Значение измерения для возрастной группы 21–40 задается дочерним элементом внутри, к примеру, сегмента следующим образом:

<xbrldi:explicitMember dimension=”d:ageGroupDim”>d:ageFrom21To40</xbrldi:explicitMember>


5.3.2. Валидация (validation)


Спецификация XBRL Dimensions дополняет набор правил валидации из спецификации XBRL.


5.3.2.1. Валидация первичных фактов


Факты по первичным концептам должны валидироваться на основании концепта и контекста. Факт автоматически считается валидным по измерениям, если для его концепта не определены связи has-hypercube.


Если в концепте определены связи has-hypercube, указанные ими гиперкубы должны быть валидными по измерениям. Контекст факта должен содержать валидную комбинацию элементов домена или значений для каждого из связанных с ним измерений гиперкуба в пределах как минимум одного базового набора. Если не задано ни одного значения измерения, используется значение измерения по умолчанию (при его наличии). Недопустимо указывать более одного значения измерения.


Обратите внимание, что при определении валидности указанного значения в пределах измерения учитываются такие атрибуты как usable в связях domain-member и closed в связях has-hypercube.


Потребовалось несколько страниц спецификации XBRL Dimensions для описания нормативного определения валидации по измерениям, поэтому реальность чуть более сложна, чем я описал здесь. Тем не менее, приведенные выше простые правила и здравый смысл должны дать вам неплохое понимание того, что же такое валидация по измерениям.

5.3.3. Равенство по измерениям


Спецификация XBRL Dimensions добавляет новый тип равенства к приведенному в спецификации XBRL обширному перечню – d-равенство (d-equal). Два факта считаются d-равными для одного измерения, если они имеют одно и то же значение этого измерения.





Tags:
Hubs:
+2
Comments 3
Comments Comments 3

Articles