Prudente TechDay – Inscrições Abertas!
Depois do enorme sucesso que foi o TechDay em Marília – SP. Teremos o Prudente TechDay (em Presidente Prudente) que deverá ser mais show ainda!
Aguardo a todos que puderem ir!
Palestrarei sobre Business Intelligence. :)
Confira mais informações no site: http://prudente.techday.net.br !
O evento é gratuito, bastando levar 1 Kg de alimento não perecível no dia do evento.
Abraços,
Thiago Zavaschi
PowerPivot – DAX – Função DATE
Olá pessoal,
Temos disponíveis entre as DAX uma série de funções para análise de tempo e datas (também conhecidas como time intelligent functions, que abordarei aos poucos).
Hoje venho relatar a função DATE e as suas peculiaridades (ao menos nesta versão do PowerPivot, também conhecida como v1), mais informações podem ser vistas no FAQ: http://powerpivotfaq.com).
A primeira função que devemos nos atentar é a função DATE. O seu objetivo é simples: retornar em formato de data sobre os inteiros passados como parâmetros.
Sintaxe: DATE(ano, mês, dia).
Exemplo 1: Retornando uma data simples.
=DATE(2010, 06, 17).
O retorno será dia 17, mês junho, ano 2010. Simples não? Lembrando que os parâmetros podem vir de resultados de outras expressões DAX (por exemplo de outra coluna). Veja abaixo:
Exemplo 2:
Apesar de simples, devemos nos atentar para pequenos detalhes que podem nos levar a problemas nas nossas manipulações de datas.
O que você acha que retorna a seguinte expressão DAX: =DATE(08, 06, 01)?
Se voc6e respondeu dia 01 de junho de 2008 errou! Na realidade representa 01/06/1908! Pois anos até 1899 são somados ao valor 1900. 1900 + 08 = 1908, entendeu?
Se desejar 2008, é necessário que o valor passado seja 2008. Mas como resolver isto se a minha coluna veio importada de uma fonte que trata 08 como 2008? Simples: Crie uma coluna computada que tranforme de 08 para 2008.
A imagem abaixo demonstra a questão do valor menor que 1900 receba uma soma de 1900 para o cálculo do ano. Anos de 1900 para cima não recebem o acréscimo.
Atente que 1789 foi para o ano 3689, e 1900/1995 permaneceram os mesmos.
Exemplo 3: Manipulando os dias (e meses).
O terceiro parâmetro é a referência ao dia.
Atenção pois há peculiaridades também: Se informar um valor de dia maior que o que o mês pode comportar (dia 31 para o mês de fevereiro, ou passar o valor 45 como dia), esse valor será somado.
Por exemplo: se informar 45 em um mês que deveria ter 30 dias apenas, será somado mais 15 dias e cairá na metade do mês seguinte.
De maneira similar, se informar uma data negativa será decrescido o valor informado.
Veja a imagem abaixo com alguns exemplos.
PS: O mesmo comportamento é aplicado ao parâmetro com o número do mês informado.
Bom pessoal era isso o que eu queria mostrar hoje. É mais para vocês não subestimarem as funções simples, pois se não conhecermos os detalhes teremos resultados muitas vezes inesperados e difíceis de rastrear.
Este artigo é parte de uma série de artigos sobre PowerPivot e DAX. Confira os outros artigos sobre PowerPivot no link: http://zavaschi.com/index.php/tag/powerpivot/
Abraços,
Thiago Zavaschi
PowerPivot – Data Analysis Expressions DAX – Intro
Então pessoal. :)
Creio que muitos que acompanham as evoluções do PowerPivot já devem ter se deparado com o seguinte pensamento: falta material sobre DAX em português e as referências externas (em inglês ao menos) são sempre de blogs de especialistas (Rob Collie, Kasper de Jonge, Vidas Matelis).
A minha proposta é seguir na mesma linha (já que meu principal canal de difusão de informação é este blog mesmo) e fornecer um pouco de conteúdo sobre DAX, mas em português. Já fiz alguns posts de introdução ao PowerPivot, então creio que valha a pena explorar num nível técnico mais profundo. Claro que se sugirem dúvidas podem perguntar :).
DAX é a abreviação para Data Analysis Expressions. É uma “evolução” da liguagem de fórmulas do Excel e só funcionará par a manipulação da base do PowerPivot dentro do seu workbook.
As DAX são importantes pois: devido a semelhança com a (já conhecida) linguagem de fórmulas do Excel e também por possibilitarem uma flexibilidade na análise dos dados. A capacidade de escrever as DAX e elas serem sensíveis aos slicers do Excel 2010 gera um ganho muito grande de capacidade de análise.
Agora vamos por a mão na massa. Neste artigo apresento uma introdução dos dois tipos de expressões DAX que podem ser criadas. Nos próximos artigs vou assumir que os concents apresentados aqui já estão assimilados.
Temos dois lugares onde podemos utilizar as DAX:
1) Através de novas colunas associadas a uma determinada tabela importada no PowerPivot, conhecidas como “calculated columns”. O resultado desta expressão DAX é armazenado juntamente aos seus dados. O uso deste tipo de DAX (em geral) não deve acarretar problemas de performance.
Há algumas experiências (do pessoal que citei no início do post principalmente) que relatam que a taxa de compressão adquirida pelo VertiPaq atravém de colunas importadas é maior que sobre as colunas calculadas. Não fiz um teste com uma massa grande ainda, mas o que eles querem dizer é que: nos casos em que o cálculo pode vir já feito no momento da importação a compressão (sobre o tamanho final do workbook) possui maiores ganhos. A seguir um exemplo da criação de uma coluna utilizando DAX ou trazendo da fonte de dados diretamente. Há outras utilizadades para colunas computadas que veremos ao longo do artigo e em artigos futuros.
Por exemplo:
Usar a expressão DAX como coluna computada: =Tabela[coluna1] * Tabela[coluna2].
É equivalente a importar (do SQL Server por exemplo) com uma coluna computada na query:
SELECT *, coluna1 * coluna2 FROM Tabela
2) Através de DAX Measures (medidas) que são calculadas tendo como base uma tabela ou uma coluna. Este cálculo será executado para cada célula que o contiver. Então atenção quando utilizá-las!
Uma DAX Measure é basicamente uma fórmula DAX (estilo a usada para a criação de uma coluna) associada a um nome (e a uma tabela).
Um aspecto positivo das DAX Measures é que elas operam sobre o conjunto atual da PivotTable. A cada intereçaão dos slicers temos o recálculo dos valores das measures e com isso temos a atualização dos valores mostrados nos gráficos e tabelas.
Por exemplo:
Vou criar uma DAX measure para o exemplo mostrado na figura anterior que fará a soma dos elementos da coluna nomeada “Valor”.
Ficar complicado (por ter muitos elementos) eu usar a coluna Valor como fonte do slicer (ver figura abaixo). Então o que fazer nestes casos?
Conforme vimos no tópico anterior, é possível criar colunas através de expressões DAX. uma saida então é criar uma nova coluna que agrupe os valores. (isso não é um case, os exemplos são apenas para fins didáticos, por isso são simples).
Vou criar uma coluna que categorize os elementos da coluna valor quando são menores que 10, entre 10 e 20, e maiores que 20. Em exemplos futuros abordaremos melhor esta estratégia de categorização.
Notas sobre a sintaxe da DAX:
* Estou usando o operador IF, que apesar de simples é extremamente importante para se obter os resultados desejados.
* O operador de concatenação de strings é o &.
* Para me referir a uma tabela eu simplesmente digo o nome da mesma, para me referenciar a uma coluna utiliza-se: NomeTabela[NomeColuna].
* Operadores MAX e MIN (perceba que não são os novos MAXX e MINX, estes veremos em artigos futuros) calculam os valeres máximos e mínimos das colunas passadas como parâmetro a eles).
* Aninhei um segundo IF no parâmetro “else” do primeiro.
A expressão resultante é a seguinte (também pode ser observada na figura abaixo):
=IF(Tabela[Valor] < 10, MIN(Tabela[Valor]) & " |- 10", IF(Tabela[Valor] <= 20, "10 |- 20", "20 |- " & MAX(Tabela[Valor])))
Usar essa nova coluna (GrupoValor) como um slicer tornou a coisa bem mais interessante, não? :)
Agora seleciono a PivotTable e vou em “New Measure” lá na ribbon. E crio a seguinte expressão DAX (perceba que também aparece na PowerPivot Field List com um pequeno ícone ao lado):
=SUM(Tabela[Valor])
Adicione esta measure como valor na PivotTable e adicione a coluna GrupoValor como um slicer. Pronto! Selecione os slicers e veja que o valor total é alterado de acordo com o que foi marcado! :)
Aguardem novos posts sobre DAX em um futuro (espero que) não muito distante!
Este artigo é parte de uma série de artigos sobre PowerPivot e DAX. Confira os outros artigos sobre PowerPivot no link: http://zavaschi.com/index.php/tag/powerpivot/
Abraços,
Thiago Zavaschi
Microsoft Business Intelligence Conference Brasil
Olá pessoal!
Gostaria de ter feito esse post anteriormente, mas devido a situações pessoais e de trabalho estive com pouco tempo disponível.
Ocorreu dia 26/05 a Microsoft BI Conference Brasil. Digamos que foi o braço brasileiro da BI Conference qeu esta ocorrendo nesta semana junto ao Tech Ed americano.
Eu tive a honra de ser convidado para palestrar pelo grande João Nunes (gerente do time de SQL Server Brasil) e assim o fiz :).
O evento foi no WTC e durou o dia todo. Devido ao aeroporto estar fechado pela manhã meu voo atrasou e só pude pegar o fim da manhã para assistir. Vi o Pimenta apresentando sobre BI junto ao Prado. Sensacional!
Pude rever grandes amigos da área de SQL Server e afins, muito bom mesmo!
O evento se dividiu no período da tarde em duas trilhas: uma um pouco mais superficial tecnicamente (focada em gerentes e gestores), nivel 100; e outra mais técnica com nível 300.
A minha palestra foi sobre PowerPivot e Reporting Services. Infelizmente eram apenas 50 minutos e não consegui mostrar tudo o que queria. Mas o pessoal gostou bastante, pois gerou muitas dúvidas ao término da apresentação! Muito 10!
Espero ter novas oportunidades como esta! Muito boa!
Em breve novidades, com o PDT (Prodente TechDay) 2010!
Segue algumas fotos (ainda não tenho as oficiais da MS, quando tiver coloco algumas aqui).
Abraços!
Verificando espaço em disco e o espaço ocupado por tabelas!
Olá pessoal!
Inspirado no post do Diego Nogare, o qual comentei (com os scripts deste post), resolvi postar aqui também os scripts sobre verificação de espaço usado em disco e por tabelas!
Verificar o tamanho ocupado por tabelas no banco (a.k.a achar maiores tabelas):
Ordenado por quantidade de linhas:
SELECT object_name(id), rowcnt, dpages * 8 AS [tamanho KB] FROM sysindexes
WHERE indid IN (1,0) AND objectproperty(id,'isusertable') = 1
ORDER BY rowcnt DESC
Ordenado por tamanho físico:
SELECT object_name(id), rowcnt, dpages * 8 AS [tamanho KB] FROM sysindexes
WHERE indid IN (1,0) AND objectproperty(id,'isusertable') = 1
ORDER BY [tamanho KB] DESC
E para mostrar o espaço em disco disponível (valor absoluto e percentual) e o espaço total dos discos, é possível utilizar (a fonte deste script é o SQLDBATips):
DECLARE @hr int
DECLARE @fso int
DECLARE @drive char(1)
DECLARE @odrive int
DECLARE @TotalSize varchar(20)
DECLARE @MB bigint ; SET @MB = 1048576
CREATE TABLE #drives (drive char(1) PRIMARY KEY,
FreeSpace int NULL,
TotalSize int NULL)
INSERT #drives(drive,FreeSpace)
EXEC master.dbo.xp_fixeddrives
EXEC @hr=sp_OACreate 'Scripting.FileSystemObject',@fso OUT
IF @hr <> 0 EXEC sp_OAGetErrorInfo @fso
DECLARE dcur CURSOR LOCAL FAST_FORWARD
FOR SELECT drive from #drives
ORDER by drive
OPEN dcur
FETCH NEXT FROM dcur INTO @drive
WHILE @@FETCH_STATUS=0
BEGIN
EXEC @hr = sp_OAMethod @fso,'GetDrive', @odrive OUT, @drive
IF @hr <> 0 EXEC sp_OAGetErrorInfo @fso
EXEC @hr = sp_OAGetProperty @odrive,'TotalSize', @TotalSize OUT
IF @hr <> 0 EXEC sp_OAGetErrorInfo @odrive
UPDATE #drives
SET TotalSize=@TotalSize/@MB
WHERE drive=@drive
FETCH NEXT FROM dcur INTO @drive
END
CLOSE dcur
DEALLOCATE dcur
EXEC @hr=sp_OADestroy @fso
IF @hr <> 0 EXEC sp_OAGetErrorInfo @fso
SELECT drive,
FreeSpace as 'Livre(MB)',
TotalSize as 'Total(MB)',
CAST((FreeSpace/(TotalSize*1.0))*100.0 as int) as 'Livre(%)'
FROM #drives
ORDER BY drive
DROP TABLE #drives
RETURN
GO
A saída do script deverá ser semelhante a:
drive Livre(MB) Total(MB) Livre(%)
----- ----------- ----------- -----------
C 9541 49999 19
D 46002 317966 14
F 37549 99998 37
K 68581 476269 14
É isso pessoal, fazia tempo que não postava algo masi focado a área de DBA (a qual gosto muito também), espero que seja útil!
Abraços,
Thiago Zavaschi
PowerPivot Lançado, BI Conference Brasil, MCITP
Finalmente depois de tanto tempo no CTP de novembro (CTP3), incompatível com o Office 2010 RTM, foi lançado publicamente o PowerPivot for Excel!
Link para download: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=e081c894-e4ab-42df-8c87-4b99c1f3c49b
Lembrem-se de baixar de acordo com a arquitetura do seu Excel instalado (x86 ou x64)!
É uma grande notícia!
Eu já estava há algumas semanas com o RTM e posso dizer que está muito mais rápido (umas 3x nos meus testes).
--
A segunda parte do post é para informar que fui convidade pelo João Nunes (gerente do time de SQL Server aqui do Brasil) para dar uma palestra sobre PowerPivot e BI, na BI Conference Brasil! Que será realizada no dia 26/05 em São Paulo!
O título da palestra será: “Implementando análises e relatórios com Power Pivot e Reporting Services”. Show né?
Não sei ainda se será um evento aberto ou não, mas assim que souber posto detalhes!
--
E por fim mas não menos importante: Ontem obtive mais uma certificação para o meu currículo! Agora sou MCITP Database Developer 2008.
A prova teve algumas questões triviais (se conhecer sobre é fácil) e algumas que realmente me fizeram queimar massa cinzenta, mas no final deu tudo certo!
Grande abraço,
Thiago Zavaschi
Mais PowerPivot (agora RTM) e o PowerPivot Day
Olá pessoal!
Primeiramente eu gostaria de agradecer imensamente a todos que estiveram presentes no PowerPivot Day realizado dia 01/05/2010 através da web.
Foi focado na tecnologia de self-service BI da Microsoft, o PowerPivot :-).
Apresentei com foco de dar ao público uma visão do que é Business Intelligence e também a parte client do PowerPivot, com a minha demo de 33 milhões de linhas! Deu pra mostrar bem a grande velocidade de processamento e facilidade de utilização.
Na sequência apresentaram duas feras: Mariano Teixeira Neto (mtn@microsoft.com), trabalha como tester do PowerPivot na Microsoft em Redmond (USA), que apresentou sobre o PowerPivot for SharePoint e a arquitetura envolvida por trás de features do SharePoint. Foi um material de altíssimo nível e que em português ainda não se encontra sobre (muita coisa não é encontrada nem em inglês!). Após o Mariano, nada mais, nada menos que o grande Rob Collie (fundados da PivotStream, ex Program Manager da Microsoft (PowerPivot)) que apresentou sobre a linguagem de fórmulas do PowerPivot, as DAX (Data Analysis eXpressions), como foi uma palestra em inglês parece que uma parte do pessoal não conseguiu acompanhar e saiu, mas ainda assim permaneceram diversas pessoas interessadas (o que eu achei o máximo)!
Meu MUITO OBRIGADO novamente aos palestrantes e a todos que estiveram presente assistindo! Espero que tenha conseguido vislumbrar bem esse mundo de BI! O feedback pelo twitter (acompanhando a hash #PowerPivotDay) foi fantástico.
Espero que isso sirva de exemplo e inspiração sobre questões como: networking internacional, eventos ligados para nós e para o pessoal de fora do país. Aguardo novos eventos assim e espero poder contribuir, ainda que minimamente, para melhorar tudo isso.
O evento repercutiu em alguns blogs, inclusive o do Fábio Ávila que foi colega de mestrado do Mariano! http://avilasolucoes.spaces.live.com/blog/cns!E76C874EF6DB7846!249.entry
O material das palestras pode ser baixado aqui: http://cid-8de5a8efc1819eca.skydrive.live.com/browse.aspx/P%c3%bablico/Webcasts/PowerPivotDay E o link para download do webcast é o seguinte: https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=pt-BR&EventID=1032445071&CountryCode=BR
E agora por último, mas com certeza não menos importante: o PowerPivot RTM foi lançado!!! Ainda não está disponível par ao grande público, mas já está disponível no MSDN (para quem é assinante). É provavél que muito em breve esteja disponível no www.powerpivot.com.
Abraços e todos e novamente obrigado!
Thiago Zavaschi
Brazilian PowerPivot Day e Community Launch
Pessoal,
Acredito que alguns de vocês já tenham ficado sabendo da minha agenda futura de eventos, mas vou reforçar o convite!
Sábado agora, dia 17/04/2010 terá a wave 2 da série de eventos pelo Brasil conhecida como Community Launch. Tive a honra de ser convidado para palestrar neste dia em Piracicaba – SP.
Será um evento presencial. Maiores informações vocês podem acompanhar no site do evento: http://www.insidedotnet.com.br/cl2010/agenda.html. Eu falarei sobre BI no SQL Server 2008 R2. :)
Teremos Community Launch em Blumenau (TechDay Blumenau) (saudosa terra do chopp :-) no dia 24/04/2010, onde palestrarei também, falando especificamente sobre o SQL Server PowerPivot! Maiores informações no site do evento: http://www.mstechday.com/grade.html.
E por fim, mas não menos importante:
Para você que não pode me acompanhar em Marília –SP (MTD2010, que aconteceu dia 10/04) e também não poderá acompanhar nos eventos presencias (e mesmo que tenha acompanhado) faço o convite para um Community Launch online: o PowerPivot Day.
Serão 3 palestras:
1) PowerPivot for Excel, onde eu falarei da feature, será ministrada em português.
2) PowerPivot for SharePoint, que será ministrara pelo Mariano Teixeira Neto (brasileiro que trabalha no time do PowerPivot em Redmond, na MS Corp), será em português também.
3) Data Analysis eXpression, que será com o grande Rob Collie (@powerpivotpro, www.powerpivotpro.com, ex-MS, um dos grandes idealizadores do PowerPivot!!!) falando sobre a linguagem DAX para manipulação dos seus PivotCharts e PivotTables. Essa será ministrada em inglês :).
O evento será totalmente online no dia 01/05/2010.
O endereço para as incrições é o: http://bit.ly/powerpivotday
Eu que já estou estudando/usando o PowerPivot vou assistir também, e claro, aprender muito com essas feras mesmo assim!! :)
Ajude-nos a divulgar :)
Grande abraço a todos!
Thiago Zavaschi
PowerPivot – Fix quanto a Expiração do CTP3
Já foi lançado uma nova versão do build de novembro mas com data de expiração no final do ano.
Links para baixar:
- http://powerpivot.com/download.aspx
- http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=48a5b47b-8c9c-450f-ab6e-178600a733ca
Link com maiores informações: http://blogs.msdn.com/powerpivot/archive/2010/04/07/fix-for-powerpivot-expiration-released.aspx
Abraços,
Thiago Zavaschi
S2B 2010 @ Curitiba – Inscrições Abertas
Pessoal,
O programa Students to Business (S2B) já está com as incrições abertas para a região de Curitiba.
O Programa S2B é o programa gratuito de capacitação (presencial!) da Microsoft!
Segue a divulgação:
Link: http://www.programas2b.com.br/
Abraços,
Thiago Zavaschi