Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Правило формирования UniqueName (AS 2000)
|
|||
|---|---|---|---|
|
#18+
Что является необходимым и достаточным устовием, чтобы Meber.UniqueName всегда возвращал стороку вида Код: plaintext а не Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2004, 16:43 |
|
||
|
Правило формирования UniqueName (AS 2000)
|
|||
|---|---|---|---|
|
#18+
Очепятка :-) Имелось ввиду Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2004, 16:45 |
|
||
|
Правило формирования UniqueName (AS 2000)
|
|||
|---|---|---|---|
|
#18+
А почему вас важна форма Unique Name ? Согласно OLEDB for OLAP, unique name является всего навсего уникальным идентификатором и не имеет никакой структуры. Провайдер может вернуть GUID если захочет. Полагаться на конкретную форму unique name - это очень опасно, потому что они могут меняться. Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2004, 22:40 |
|
||
|
Правило формирования UniqueName (AS 2000)
|
|||
|---|---|---|---|
|
#18+
Моше Во-первых, это же чертовски удобно :-) (только чур, апологетам OOП и прочих отраслей теологии не тащить меня сразу на костер) из UniqueName выдернуть кучу полезной информации: - Измерение, - Номер Уровня, - Показываемое имя. и использовать UniqueName со 100% гарантией при построении MDX-запросов. Во-вторых, работая с ADOMD (не .NET) и делая из Client-Server VB6 приложения 3-х звенку на С#, было "лень", да и бюджет проекта не позволял, воплотить полностью объектную модель ADOMD (не .NET) в С#, .NET pure. , да чтоб все это было сериализируемо и т.д... (в конце концов MSFT должен тоже мышей ловить). Понимаю, что сэкономили, но такова жизнь, и цитируя посла России на Украине - "хотели как лучше, а получилось как всегда" - но мир то не идеален. А ваше намек, что в один прекрасный день я могу получить в UniqueName ничего не говорящий GUID, я принимаю к сведению, как руководство к действию. p.s Я мог бы это написать на "волне отличном" английском, но было бы ужасно сухо и безчувственно, а душа то тоже хочет слово замолвить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2004, 00:52 |
|
||
|
Правило формирования UniqueName (AS 2000)
|
|||
|---|---|---|---|
|
#18+
мда уж Моша обнадежил, эх а так просто все было тянуть из UniqueName 8-/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2004, 10:09 |
|
||
|
Правило формирования UniqueName (AS 2000)
|
|||
|---|---|---|---|
|
#18+
Ребята - я не понимаю в чем проблема. Практически единственный способ получить member unique name - это из MDSCHEMA_MEMBERS schema rowset. Там есть и имя иерархии, и имя уровня, и просто имя - зачем парсить unique name ? Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2004, 11:30 |
|
||
|
Правило формирования UniqueName (AS 2000)
|
|||
|---|---|---|---|
|
#18+
Моше А проблема в том, что работать с ADODB.Connection.OpenSchema, учитывая "подробность" и "доходчивость" документации по ADOMD и "квалифицированность" второго параметра OpenSchema - удовольствие ниже среднего - чуть ошибся в составлении object Array и ищи - "почему я не верблюд". Во вторых, только начиная с ADOMD.NET в документации появилось в явном виде. ADOMD.NET SDK (Member.UniqueName Property)The UniqueName property returns the fully-qualified unique name of the Member. To get the member name of the Member, use the Name property. Warning Because this value is provider specific and may change in the future, it should be used in whole, and not be parsed. но как это вяжется с ADOMD.NET SDK (Member.Name Property)Using the member key ensures precise member identification in these cases. The ampersand (&) character is used in Multidimensional Expressions (MDX) to differentiate a member key from a member name, as shown in the following example: [Time].[Time].[2nd half].&[Q4] In this case, the member key of the fourth quarter member, Q4, is used. The Name property returns the member name of the Member. To get the member key of a Member, use the UniqueName property. Что же это получается - в доке по Member.UniqueName предупреждается, что форма UniqueName не гарантипрвана, и не надо интерпретировать содержание. А в доке по Member.Name предлагается "выуживать" member key из UniqueName. Вот в этом то и наши проблемы - как получать member key, не используя "фичи" и work around и гарантировать независимость от "provider specific and may change in the future". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2004, 16:07 |
|
||
|
Правило формирования UniqueName (AS 2000)
|
|||
|---|---|---|---|
|
#18+
backfireВо вторых, только начиная с ADOMD.NET в документации появилось в явном виде. ADOMD.NET SDK (Member.UniqueName Property) The UniqueName property returns the fully-qualified unique name of the Member. To get the member name of the Member, use the Name property. Warning Because this value is provider specific and may change in the future, it should be used in whole, and not be parsed. Это не совсем верно. Еще в самой первой версии OLEDB for OLAP которая вышла в 1997 году была следующая глава "Provider Implementation Considerations for Unique Names": http://msdn.microsoft.com/library/default.asp?url=/library/en-us/oledb/htm/olapprovider_implementation_for_unique_names.asp Там в частности написано что провайдеры вольны строить unique names как им захочется. backfireTo get the member key of a Member, use the UniqueName property. Это серьезная ошибка в документации - большое спасибо что Вы ее заметили. Мы во время tech review это пропустили :( Я открою на это дело баг. backfireВот в этом то и наши проблемы - как получать member key, не используя "фичи" и work around и гарантировать независимость от "provider specific and may change in the future". На это я дам два ответа: 1. А зачем Вам нужно знать key ? 2. А вот в Юконе это будет можно :) Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2004, 23:50 |
|
||
|
Правило формирования UniqueName (AS 2000)
|
|||
|---|---|---|---|
|
#18+
МошаНа это я дам два ответа: 1. А зачем Вам нужно знать key ? Давайте дружно посмеемся, вы знаете над чем :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 00:24 |
|
||
|
Правило формирования UniqueName (AS 2000)
|
|||
|---|---|---|---|
|
#18+
МошаНа это я дам два ответа: 1. А зачем Вам нужно знать key ? 2. А вот в Юконе это будет можно :) Ну если в Юконе это будет можно (значит это, что с выходом AS 2005 интерфейсы ADOMD.NET и XMLA еще раз поменяют?), то значит это кому то нужно. Нужно и мне, для 1000 дел. Одно из них симбиоз SQL и AS. Необходима 100% однозначная идентификация записей в таблицах измерений (фактов) SQL и членов измерений AS. Я уже рассказывал о моей реализации Write-Back. Затем, на больших измерениях - например "клиенты" или "товары", использовать ADOMD.Catalog и все что в нем для интерактивного выбора элементов измерений - смерти подобно. Вместо этого идем к таблице измерения в SQL - благо дело, там все летает. Продолжать можно долго. МошаЭто не совсем верно. Еще в самой первой версии OLEDB for OLAP которая вышла в 1997 году была следующая глава "Provider Implementation Considerations for Unique Names": http://msdn.microsoft.com/library/default.asp?url=/library/en-us/oledb/htm/olapprovider_implementation_for_unique_names.asp Там в частности написано что провайдеры вольны строить unique names как им захочется. Это верно, но как разработчик приложений к SQL и AS я привык сверяться с BOL, а там по этому поводу, применительно к ADOMD не сказано ничего. :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 00:46 |
|
||
|
Правило формирования UniqueName (AS 2000)
|
|||
|---|---|---|---|
|
#18+
Моше Ну а вопрос то изначальный остался совсем без ответа :-( thisЧто является необходимым и достаточным устовием, чтобы Meber.UniqueName всегда возвращал стороку вида [Customers].[All Customers].&[Country_key].&[Region_Key].&[City_Key].&[Customer_Key] а не [Customers].[All Customers].[Country_Name].[Region_Name].[City_Name].[Customer_Name] Ответ же существует? :-) И вы его знаете. Самое проблематичное, не в том, что провайдер волен стиль UniqueName, что само по себе "безобразие", а в том, что UniqueName меняетс в зависимости от свойств уникальности имен и ключей в измерении и еще каких то темных факторов. Я вот только никак не выведу закономерность, а поэтому и попросил о помощи. Подозреваю что ADOMD.NET отличается от ADOMD, что добавляет нам головной боли. По поводу "безобразия". Представьте себе. Аналитическое приложение. Пользователи насоздавали отчетов и сделали их persistent (сохранили их). В каком же виде будет по-уму сохранять информацию о выбранных Members и прочих составляющих из которых потом MDX запрос построится, если вид UniqueName не гарантируется при переходе с версии на версию? Или для каждого измерения надо создать UserDefinedProperty класть туда ключ, к норальному MemberKey ведь просто так не подобраться, - по нему запоминать Members. Это будет железобетонно, но с производительностью доступа к UserDefinedProperty это мертворожденное решение. Вот и получается, что вы говорите как не стоит делать, а как стоит к сожалению не говорите :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 01:07 |
|
||
|
Правило формирования UniqueName (AS 2000)
|
|||
|---|---|---|---|
|
#18+
Может, я прочитал невнимательно, но чем Properties("key") не катит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 18:19 |
|
||
|
Правило формирования UniqueName (AS 2000)
|
|||
|---|---|---|---|
|
#18+
Может, я прочитал невнимательно, но чем Properties("key") не катит? Получить то его я могу, а вот можно ли по нему найти - стоит под знаком большого вопроса в силу "подробнейшей" документированности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 18:40 |
|
||
|
Правило формирования UniqueName (AS 2000)
|
|||
|---|---|---|---|
|
#18+
Я вас что-то не понимаю. UniqueName действительно может вернуть Бог знамо что, но что по key найти нельзя, никто, вроде, не утверждал. Или я ошибаюсь? А то сам на днях это использовал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 19:21 |
|
||
|
Правило формирования UniqueName (AS 2000)
|
|||
|---|---|---|---|
|
#18+
но что по key найти нельзя, никто, вроде, не утверждал. Или я ошибаюсь? А то сам на днях это использовал. Вот именно что нигде не написано, что по нему можно найти. key доступен только как Property, а по Prperty согласно ADOMD (ADOMD.NET) найти Member нельзя (ну или только через ж...). Так что Properties("MEMEBER_KEY") на сегодняшний ничем не лучше и не хуже UniqueName. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 19:40 |
|
||
|
Правило формирования UniqueName (AS 2000)
|
|||
|---|---|---|---|
|
#18+
Стоп. Имея ключи, вы можете слепить строку первого вида - см. свой первый пост. От неё Members взять. И всё получите. Или я что-то недопонял? Я так делал как-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 20:28 |
|
||
|
Правило формирования UniqueName (AS 2000)
|
|||
|---|---|---|---|
|
#18+
Мне кажется, что в этой дискуссии смешано несколько понятий. Я попытаюсь рассмотреть какая между ними разница. 1. Member Unique Name - это уникальный идентификатор мембера. Он гарантирован быть одним и тем же если в кубе не было structural changes. Т.е. неважно как получен этот самый member unique name - через OLEDB, XMLA, ADOMD, ADOMD.NET и т.д. - он будет один и тот же. Куб который переехал из AS2000 в Юкон тоже должен сохранить unique names. Иначе, как заметил backfire, будет проблема с persisted views. Форма unique name никому не гарантирована. 2. Member Qualified Name - это форма по которой можно найти мембер в измерении, но она не гарантирована быть уникальной. Т.е. мембер Заказчик.Россия.Ленинград.ВасяПупкин, может быть а может и не быть уникальным. Аппликация которая пользуется qualified name, должна знать можно или нельзя его использовать. Иногда AS2K решает использовать member qualified name в качестве member unique name, когда он знает наверняка что тот будет уникален. 3. Member Name Qualified By Key - это форма когда мембер в измерении находится по его ключу а не по имени. Это как правило уникально (хотя и не обязано быть таковым). Даже если member unique name не построен по принципу hierarchy.level.&key - все равно если ключ уникален на уровне, то такая форма будет работать не хуже member unique name. Я всегда рекоммендую разработчикам оставаться в рамках куба и пользоваться только member unique name, потому что только такой подход является 100% правильным и совместимым с будующими версиями. Единственное для чего в AS2K нужны keys - это для dimension writeback, все остальное можно сделать не выходя наружу. Иногда разработчики решают по какой-либо причине использовать ключи напрямую (нету времени сделать правильно, оптимизация производительности и т.д.). Итог: никто не должен угадывать или парсить unique names, AS2K найдет мемберов и по ключам (см. форму 3) если есть надобность. Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 07:38 |
|
||
|
Правило формирования UniqueName (AS 2000)
|
|||
|---|---|---|---|
|
#18+
MoshaЯ всегда рекоммендую разработчикам оставаться в рамках куба и пользоваться только member unique name, потому что только такой подход является 100% правильным и совместимым с будующими версиями. Единственное для чего в AS2K нужны keys - это для dimension writeback, все остальное можно сделать не выходя наружу. Иногда разработчики решают по какой-либо причине использовать ключи напрямую (нету времени сделать правильно, оптимизация производительности и т.д.). Полность с Вами согласен. Но - мир не идеален и бюджеты проектов не резиновые, приходится иногда и экономить. :-) Производительность тоже немаловажный фактор и 64к на запрос никто не отменял. Прозводительность же больших измерений оставляет желать лучшего. Поэтому хотелось бы услышать ваши рекомендации как для дизайна измерений, так и для формирования запросов, чтобы: - не терять производительность, - не иметь проблем при смене версии - не писать лишнего кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 14:36 |
|
||
|
Правило формирования UniqueName (AS 2000)
|
|||
|---|---|---|---|
|
#18+
Mosha backfireTo get the member key of a Member, use the UniqueName property. Это серьезная ошибка в документации - большое спасибо что Вы ее заметили. Мы во время tech review это пропустили :( Я открою на это дело баг. Вот что мы читаем в доке к ADOMD.NET к свежайшей Beta 2. ADOMD.NET Member.Name PropertyThe Name property returns the member name of the Member. To get the member key of a Member, use the UniqueName property. Либо баг не пофиксен, либо нас снова подбивают парсить UniqueName. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2004, 02:27 |
|
||
|
Правило формирования UniqueName (AS 2000)
|
|||
|---|---|---|---|
|
#18+
И всё-таки, для тех, кто хочет рисковать нарваться на несовместимости при переходе на следующие версии: каким образом OLE BD for OLAP формирует UniqueName? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2004, 13:34 |
|
||
|
Правило формирования UniqueName (AS 2000)
|
|||
|---|---|---|---|
|
#18+
GvyntИ всё-таки, для тех, кто хочет рисковать нарваться на несовместимости при переходе на следующие версии: каким образом OLE BD for OLAP формирует UniqueName? Я сам бы хотел знать исчерпывающий ответ на этот вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2004, 13:41 |
|
||
|
|

start [/forum/topic.php?fid=49&msg=32561701&tid=1872400]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
198ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 263ms |
| total: | 552ms |

| 0 / 0 |
