вторник, 15 мая 2012 г.

Ты ни разу не меломан если...

Ты ни разу не меломан если:
1) Ты считаешь что Beach Boys это какая-то мальчуковая команда из 90-х с хитами типа Everybody и I want it that way.
2) При имени Боб Дилан у тебя возникает образ смазливого парня с микрофоном и в белой майке.
3) Ты любишь песни Майкла Джексона но ничего не слышал про исполнителя Prince.
4) Ты не можешь вспомнить ни одного канадского исполнителя/группы, даже Селин Дион и Аврин Лавин.
5) Ты реально удивляешься, почему песни с Евровидения потом нигде не крутят.
6) Когда в компании вдруг затрагивается творчество например R.E.M, ты для поддержания разговора вставляешь что-то типа "А мне у них очень нравится песня Losing My Religion".
7) Тебе не режет ухо, когда на концерте Дискотеки 80-х группа Alphaville поет тупо под ту же фонограмму, что крутят по Серебряному дождю, даже не удосужив открывать рот хотя бы под Live-версию.   
8) Лучшим саундтреком ты считаешь OST к Жестоким играм.
9) Ты удивляешься, когда люди относят к R&B Стиви Вандера и Элтона Джона, а не твоих любимых 50Cent. 
10) В твоем профиле Вконтакте до сих пор в разделе Увлечения стоит Limp Bizkit и Linkin Park, как ты написал в 2006 году. И ведь реально ты до сих пор так считаешь.
11) Ты слышал, что Битлы после распада вели сольную карьеру, но вряд ли способен что то напеть из их самостоятельного творчества.
12) Услышав что-то про Максима Леонидова ты моршишься, вспоминая у него лишь заезженную в медиа до тошноты "Девочку-виденье"
13) Ты можешь слушать одну и ту же песню подряд раз 10, если тебе она нравится. И плохо не будет.
14) Ты учился играть на гитаре, но барре тебе так и не далось.
15) Ты вообще не слышал такие имена как Брюс Спрингстин, Дэвид Боуи и Марк Нопфлер.

среда, 28 апреля 2010 г.

Eliminate Group By clause from interface mapping

Quite often a behavior for IKM Module is by default to put Group By clause to a generated SQL for interface where there is grouping function in a Mapping Implementation.
It may be very handy, but sometimes it is unwanted. E.g. in below mapping:

decode (row_number()
over(partition by S_DOCSUM_DELTA.ISN order by F_INSURED_RISK.ACC_SUBGR_ID ),1,floor(10000*abs(S_DOCSUM_DELTA.AGRAMOUNTPAY)/count(S_DOCSUM_DELTA.ISN) over (partition by S_DOCSUM_DELTA.ISN))/10000 + remainder(abs(S_DOCSUM_DELTA.AGRAMOUNTPAY),floor(10000*abs(S_DOCSUM_DELTA.AGRAMOUNTPAY)/count(S_DOCSUM_DELTA.ISN) over (partition by S_DOCSUM_DELTA.ISN ))/10000),floor(10000*abs(S_DOCSUM_DELTA.AGRAMOUNTPAY)/count(S_DOCSUM_DELTA.ISN) over (partition by S_DOCSUM_DELTA.ISN))/10000 )


No matter what it means it does not need Group By since COUNT() OVER here is an analytical function.

To force ODI not no use default behavior we should either comment the line <%=snpRef.getGrpBy() %> in Insert Step of IKM or make it optional with creating option GENERATE_GROUP_BY_CLAUSE with default value Yes and substituting <%=snpRef.getGrpBy() %> with:

<% if (odiRef.getOption("GENERATE_GROUP_BY_CLAUSE").equals("1") ) out.print(odiRef.getGrpBy()); %>

Best, Ivan.

Upd:
I stumbled upon graceful trick to solve this problem.
Prooflink

понедельник, 26 апреля 2010 г.

Локализация в ODI

В ходе разбора различных KM обнаружилось, что все они требуют доработок для корректной выгрузки и загрузки кириллицы.
Вот некоторые из них:

1) Модуль LKM MSSQL to Oracle (bcp,sqlldr). Чтобы выгрузка из MSSQL происходила c учетом кодовой страницы 1251 нужно добавить соотв-й параметр в конец строки формирования bcp на шаге 191. BCP out data to temporary bcp file

На Sunopsys API это выглядит так:
<%out.print(" -C"+odiRef.getOption("MSSQL_FILE_ENCODING"));%>

Здесь задана опция MSSQL_FILE_ENCODING с типом Value и значением по умолчанию = 1251

Результат будет например следующим:

C:\"Program Files"\"Microsoft SQL Server"\90\Tools\Binn\bcp my_db.dbo.AGREEMENT out C:/Temp/dump.bcp -c -S192.168.10.01 -Uuser -Ppassword -t @#$% -C1251

2) Модуль LKM MSSQL to Oracle (bcp,sqlldr). Загрузка sqlldr происходит с учетом клиентских настроек машины. Часто разделитель на клиенте и сервере не совпадают и SQLLOADER выдает ошибки. Что бы в ODI изменять параметр NLS_NUMERIC_CHARACTERS надо выполнять команду ОС в шаге Call SQLLoader via Jython.

Чтобы задать это с помощью Option, создадим новую опцию O_NNC c Type = Text и Default Value = .,
а для получения структуры "set NLS_NUMERIC_CHARACTERS=.," мы добавим в начале в этом шаге:

exitCode = os.putenv(r"NLS_NUMERIC_CHARACTERS","<%
NNC=odiRef.getOption("O_NNC");
out.print(NNC);
%>")

Теперь перед запуском будет выполнена команда set NLS_NUMERIC_CHARACTERS=".," и после этого примутся все записи с разделителем "точка". Вот что получим в итоге:

import os

exitCode = os.putenv(r"NLS_NUMERIC_CHARACTERS",".,")
exitCode = os.system(r"sqlldr control=C:/Temp/X1240101.ctl log=C:/Temp/X1240101.log userid=proto2/<@=snpRef.getInfo("DEST_PASS") @>@orcl > C:/Temp/X1240101.out")

if (exitCode<>0 and exitCode<>2) :
raise("SQLLDR failure(s)");


3) Модуль LKM Excel to Oracle
Для возможности делать Reverse excel-структуры надо создать ODBC, к нему Sun-JDBC-ODBC Bridge а в самом Excel файле создать Range - выделить диапазон вместе с заголовком, далее правая кнопка - Name A Range и задать Имя Диапазона. После этого при Selective Reverse - Objects to Reverse будет доступен это Range.

Также для возможности корректно исп-ть кириллицу, надо в настройках Data Server к Excel прописать в Description key charSet = cp1251.

Надеюсь, кому-нибудь сэкономит время.

вторник, 8 сентября 2009 г.

Erroneous totalling with OBIEE

During testing procedure of data quality I started to compare data in a DW and source database - I've decided just to check totals and encountered strange behaviour of BI Server totalling feature:







Report shows different values for "Филиал"(Affiliate) (here is a right total) and "Общий итог"(Grand Total) (here is a wrong total). This may be confused to a user, so I investigated the issue. As it turned out, "Наименование услуги"(Service name) was based on a sourse which used "Where Clause":


Grand Total summed not just those values of "Наименование услуги"(Service name) that represented in a report, but included those ones that did not meet condition of "Where Clause" so it resulted in mismatch of totals.
Solving of problem has been found here - http://oraclebi.soundvoid.net/2008/10/grand-totals-with-calculated-columns-2/

I just inserted section
<ReportAggregateEnabled>true</ReportAggregateEnabled>
to a instanceconfig.xml, restarted Presentation Services and got proper result:

Thanx to all.

пятница, 22 мая 2009 г.

Pilot

I decided to become blogger here to share my Q&A, news, achievments,dissapointments as a BI consulter. English is chosen to be maximum comprehensible to technical specialists all around the world.
Ivan, Moscow,Russia,2009.