Mostrando postagens com marcador PowerPivot. Mostrar todas as postagens
Mostrando postagens com marcador PowerPivot. Mostrar todas as postagens

sexta-feira, 25 de julho de 2014

PowerPivot – DAX – Entendendo o contexto de execução

16MAY/116
Introdução ao Contexto de Execução
Antes de entrar nas especificidades de cada função, conforme anunciei no meu último post que o faria, é importante frisar que o resultado obtido é sempre baseado no contexto atual. O contexto pode vir da tabela que você está trabalhando (novas colunas ao modelo) ou ao conjunto tratado pela measure.
E o que pode afetar/criar esse contexto?
Basicamente o contexto vem dos filtros aplicados (filtros nas funções ou slicers). Isso afeta o resultado esperado, por exemplo ao utilizar um slicer (segmentador de dados) temos uma redução de contexto.
Quando estamos trabalhando com valores relativos, por exemplo, considere o seguinte conjunto de dados e a seguinte DAX:
image
=SUM(Tabela[Categoria])
Temos um resultado semelhante a:
image
Neste momento estamos trabalhando com o conjunto total dos dados, mas ao marcar um slicer, por exemplo “Rock”, temos o filtro sobre o conjunto usado:
image
 image
Ok, Thiago até aí ok, mas em que cenários que devo me atentar quanto a isso? Por exemplo, e se você possuir uma expressão DAX para calcular uma média, onde o denominador seja o somatório total das vendas ?
Algo como:
Vendas / Todas as vendas independente de categoria ?
Você poderia pensar em algo como =SUM(Tabela[Categoria])/SUM(Tabela[Categoria]), e manter a divisao por categorias, mas a conta não faria sentido, pois tanto o numerador quanto o denominador resultariam em um valor flutuante de acordo com o contexto.
Como resolver então?
Existem três funções que podem ajudar que são: CALCULATE(), ALL() e ALLExcept().
O CALCULATE serve para manipular o contexto, e o ALL e ALLExcept servem para retornar regiões dos dados de forma invariável ao contexto dos slicers (ALL) e podendo ter excessões (ALLExcept).
Na prática ficaria algo como:
=SUM(Tabela[Valor])/CALCULATE(SUM(Tabela[Valor]),ALL(Tabela))
Assim, mesmo aplicando um slicer, o resultado da medida (measure) para aquela categoria é baseado no valor total(denominador) e não mais no contexto dos slicers, veja:
image
image

Por Thiago Zavaski

quarta-feira, 2 de julho de 2014

PowerPivot 2013 Erro: Modelo de Dados danificados


Eu tenho usado o PowerPivot no Excel 2013 e SQL Server 2012 SP1 lado modelo de tabela a lado por mais de 3 meses. Recentemente eu só encontrou o seguinte erro ao criar nova pasta de trabalho Excel 2013 a partir do zero e adicionar uma tabela para o modelo de dados.
Não foi possível carregar o modelo de dados. Isso pode ser porque o modelo de dados na pasta de trabalho está danificado.
 PowerPivot erro - Modelo de Dados pode ser danificado
 
PowerPivot é incapaz de carregar o modelo de dados.
Erro PowerPivot: PowerPivot é incapaz de carregar o modelo de dados
 
Parece que eu não sou o único que está tendo o problema. Chris Webb ( b | t ) disse-me que ele também encontrou no passado. Outros mencionaram que ele está trabalhando para eles sem qualquer problema.
Tenho registrado recentemente a questão em Ligação . Por favor vote, se você encontrar o mesmo problema.
Para resumir, os detalhes do ambiente que tenho isso aconteceu são:
Sistema operacional: Windows 8 Pro (6.2.9200) - 64-bit
SQL Server 2012 SP1 (11.0.3128) - 64-bit
Office Professional Pro 2013: Microsoft Excel 2013 15.0.4454.1503 MSO (15.0.4454.1504) 64-bit
 
A solução é simplesmente desligar serviços (tabulares) SQL Server Analysis Services. Isso deve permitir que os usuários adicionem modelo de dados para o PowerPivot novamente. Embora a solução é simples e funciona, torna-se complicado para nós, que precisa usar tanto PowerPivot eo modelo de tabela ao mesmo tempo.
Esperemos que isso será corrigido em breve. 

Resumo

Tendo PowerPivot (Excel 2013) e a instância do SQL Server Analysis Serviços tabular Modelo instalado na mesma máquina pode resultar em um erro ao abrir o PowerPivot. O erro "Não foi possível carregar o modelo de dados. Isso pode ser porque o modelo de dados na pasta de trabalho está danificado. "Aparecer mesmo que o modelo de dados não está danificado (ou nem mesmo criado ainda). A solução é parar a instância de modelo de tabela. O problema foi registrado em Conectar .
 

Leitura adicional

quarta-feira, 25 de junho de 2014

Enviar Email via VBA - Excel (Macro)

Vou mostrar uma macro para enviar suas planilhas por email diretamente pelo Excel. Então você poderia me dizer: “Ah!!! Mas o Excel já me permite fazer isso através do menu Arquivo > Enviar para…“. E eu lhe digo: “Com toda razão, meu caro!”. Mas diga-me, se por um acaso, você desejasse enviar apenas uma planilha da sua pasta de trabalho, o que você faria? Copiaria essa planilha em um novo arquivo, salvaria este novo arquivo, para só depois enviá-lo. Estou certo?! Então. Esse é só um dos casos que esta macro lhe ajudaria.

Essa rotina que irei descrever pode ser adaptada para diversas situações. Você, como programador, entenderá o seu funcionamento e saberá ajustá-la para a sua necessidade, de acordo com o seu projeto. Seja para enviar automaticamente ao concluir alguma etapa do seu programa, seja para enviar planilhas seletivamente, para enviar para destinatários já cadastrados em algum banco de dados, enfim, use sua criatividade e obtenha os mais fantásticos resultados.
Primeiro, crie um módulo global para escrever a rotina de envio de emails. Vamos chamá-la deEnviarEmail.
1Sub EnviarEmail()
2    ActiveWorkbook.SendMail "email_do_destinatário@email.com", "Título do Email"
3End Sub
O código acima dispensa maiores explicações. Ele serve para enviar todo o arquivo (pasta de trabalho) por email.
A partir dele você pode começar a se divertir, adicionando modificações que atenderão ao seu projeto, em particular. Suponha que sua necessidade seja de enviar apenas uma planilha específica dentre as inúmeras planilhas que você possui no seu arquivo. Você pode fazer assim:
01Sub EnviarEmailPlanilhaEspecifica()
02Dim NovoArquivoXLS As Workbook
03Dim sPlanAEnviar As String
04Dim sExcluirAnexoTemporario As String
05 
06'Define a planilha que será enviada por email. Ex.: Plan1, Balancete, Lista De Nomes, etc
07 sPlanAEnviar = "Plan2"
08 
09 'Cria um novo arquivo excel
10 Set NovoArquivoXLS = Application.Workbooks.Add
11 
12 'Copia a planilha para o novo arquivo criado
13 ThisWorkbook.Sheets(sPlanAEnviar).Copy Before:=NovoArquivoXLS.Sheets(1)
14 
15 'Salva o arquivo
16 NovoArquivoXLS.SaveAs ThisWorkbook.Path & "\" & sPlanAEnviar & ".xls"
17sExcluirAnexoTemporario = NovoArquivoXLS.FullName
18 
19 'Envia o email
20 NovoArquivoXLS.SendMail "email_do_destinatário@email.com", "Título do Email"
21 
22 'Fecha o arquivo novo
23 NovoArquivoXLS.Close
24 
25'Exclui o arquivo criado apenas para ser enviado.
26Kill sExcluirAnexoTemporario
27 
28End Sub
Esta macro salvará em um novo arquivo excel somente a planilha informada e a enviará por email.
Espero que gostem.
Abraços.
 
 

Sharepoint enviando email através de SMTP externo com autenticação

Sharepoint enviando email através de SMTP externo com autenticação Uma demanda interna nossa é que na nossa sede não tem IP Fixo. nesse c...