Entrar com a conta da Microsoft
Entrar ou criar uma conta.
Olá,
Selecionar uma conta diferente.
Você tem várias contas
Escolha a conta com a qual você deseja entrar.

As tabelas de datas no Power Pivot são essenciais para navegar e calcular dados ao longo do tempo. Este artigo fornece uma compreensão completa das tabelas de datas e como você pode cria-las no Power Pivot. Em particular, este artigo descreve:

  • Por que uma tabela de datas é importante para navegar e calcular dados por data e hora.

  • Como usar o Power Pivot para adicionar uma tabela de datas ao Modelo de Dados.

  • Como criar novas colunas de data, como Ano, Mês e Período em uma tabela de datas.

  • Como criar relações entre tabelas de datas e tabelas de fatos.

  • Como trabalhar com o tempo.

Este artigo destina-se aos usuários novos no Power Pivot. No entanto, é importante já ter uma boa compreensão sobre importação de dados, criação de relações e criação de colunas e medidas calculadas.

Este artigo não descreve como usar funções Time-Intelligence DAX em fórmulas de medida. Para obter mais informações sobre como criar medidas com funções de Inteligência de Tempo do DAX, consulte Inteligência de Tempo no Power Pivot em Excel.

Observação: No Power Pivot, os nomes "measure" e "calculated field" são sinônimos. Estamos usando a medida de nome ao longo deste artigo. Para obter mais informações, consulte Measures in Power Pivot.

Sumário

Noções básicas sobre tabelas de data

Quase todas as análises de dados envolvem a navegação e a comparação de dados em datas e horas. Por exemplo, você pode querer somar os valores de vendas do último trimestre fiscal e comparar esses totais com outros trimestres, ou talvez você queira calcular um saldo de fechamento de fim de mês para uma conta. Em cada um desses casos, você está usando datas como uma maneira de agrupar e agregar transações de vendas ou saldos para um determinado período de tempo.

Power View relatório

Tabela dinâmica de vendas totais por trimestre fiscal

Uma tabela de datas pode conter muitas representações diferentes de datas e hora. Por exemplo, uma tabela de datas geralmente terá colunas como Ano Fiscal, Mês, Trimestre ou Período que você pode selecionar como campos de uma Lista de Campos ao cortar e filtrar seus dados em tabelas dinâmicas ou relatórios Power View.

Power View Field list

Lista de Campo do Power View

Para que colunas de datas como Year, Month e Quarter incluam todas as datas dentro de seu respectivo intervalo, a tabela de datas deve ter pelo menos uma coluna com um conjunto contíguo de datas. Ou seja, essa coluna deve ter uma linha para cada dia de cada ano incluída na tabela de datas.

Por exemplo, se os dados que você deseja navegar têm datas de 1º de fevereiro de 2010 a 30 de novembro de 2012 e você relata um ano de calendário, então você vai querer uma tabela de datas com pelo menos um intervalo de datas de 1º de janeiro de 2010 a 31 de dezembro de 2012. Todos os anos em sua tabela de datas devem conter todos os dias de cada ano. Se você estiver atualizando regularmente seus dados com dados mais recentes, talvez você queira executar a data final em um ou dois anos, para que você não tenha que atualizar sua tabela de datas conforme o tempo passa.

Tabela de datas com um conjunto contíguo de datas

Tabela de data com datas contíguas

Se você relatar em um ano fiscal, poderá criar uma tabela de datas com um conjunto contíguo de datas para cada ano fiscal. Por exemplo, se o ano fiscal começar em 1º de março e você tiver dados para os anos fiscais de 2010 até a data atual (por exemplo, no FY 2013), você poderá criar uma tabela de datas que comece em 1/3/2009 e inclua pelo menos todos os dias em cada ano fiscal até a última data no Ano Fiscal de 2013.

Se você relatar o ano do calendário e o ano fiscal, não será necessário criar tabelas de datas separadas. Uma tabela de data única pode incluir colunas para um ano de calendário, ano fiscal e até mesmo um calendário de período de quatro semanas. O importante é que sua tabela de datas contém um conjunto contíguo de datas para todos os anos incluídos.

Adicionar uma tabela de datas ao Modelo de Dados

Há várias maneiras de adicionar uma tabela de datas ao seu Modelo de Dados:

  • Importar de um banco de dados relacional ou de outra fonte de dados.

  • Crie uma tabela de datas Excel e copie ou vincule a uma nova tabela no Power Pivot.

  • Importar do Microsoft Azure Marketplace.

Vamos ver cada uma delas com mais atenção.

Importar de um banco de dados relacional

Se você importar alguns ou todos os seus dados de um data warehouse ou outro tipo de banco de dados relacional, as chances são de que já haja uma tabela de datas e relações entre eles e o restante dos dados que você está importando. As datas e o formato provavelmente corresponderão às datas em seus dados de fato, e as datas provavelmente começarão bem no passado e sairão para o futuro. A tabela de datas que você deseja importar pode ser muito grande e conter um intervalo de datas além do que você precisará incluir em seu Modelo de Dados. Você pode usar os recursos avançados de filtro do Assistente de Importação de Tabela do Power Pivot para escolher seletivamente apenas as datas e as colunas específicas de que você realmente precisa. Isso pode reduzir significativamente o tamanho da sua agenda de trabalho e melhorar o desempenho.

Assistente de Importação de Tabela

Caixa de diálogo do Assistente de importação de tabela

Na maioria dos casos, você não precisará criar colunas adicionais como Ano Fiscal, Semana, Nome do Mês etc. porque elas já existirão na tabela importada. No entanto, em alguns casos, depois de importar a tabela de datas para seu Modelo de Dados, talvez seja necessário criar colunas de data adicionais, dependendo de uma necessidade específica de relatório. Felizmente, isso é fácil de fazer usando o DAX. Você aprenderá mais sobre como criar campos de tabela de datas mais tarde. Cada ambiente é diferente. Se você não tiver certeza se suas fontes de dados têm uma tabela de data ou calendário relacionada, fale com o administrador do banco de dados.

Criar uma tabela de datas em Excel

Você pode criar uma tabela de datas no Excel e, em seguida, copiá-la em uma nova tabela no Modelo de Dados. Isso é realmente muito fácil de fazer e oferece muita flexibilidade.

Quando você cria uma tabela de datas Excel, você começa com uma única coluna com um intervalo contíguo de datas. Em seguida, você pode criar colunas adicionais, como Year, Quarter, Month, Fiscal Year, Period, etc. na planilha Excel usando fórmulas Excel ou, depois de copiar a tabela para o Modelo de Dados, você pode cria-las como colunas calculadas. A criação de colunas de data adicionais no Power Pivot é descrita na seção Adicionando Novas Colunas de Data à Tabela de Datas posteriormente neste artigo.

Como: criar uma tabela de datas no Excel e copiá-la no Modelo de Dados

  1. Em Excel, em uma planilha em branco, na célula A1, digite um nome de header de coluna para identificar um intervalo de datas. Normalmente, isso será algo como Date, DateTime ou DateKey.

  2. Na célula A2, digite uma data inicial. Por exemplo, 1/1/2010.

  3. Clique na alça de preenchimento e arraste-a para baixo até um número de linha que inclui uma data final. Por exemplo, 31/12/2016.

    Coluna de data no Excel

  4. Selecione todas as linhas na coluna Data (incluindo o nome do header na célula A1).

  5. No grupo Estilos, clique em Formatar como Tabelae selecione um estilo.

  6. Na caixa de diálogo Formatar como Tabela, clique em OK.

    Coluna de data no Power Pivot

  7. Copie todas as linhas, incluindo o header.

  8. No Power Pivot, na guia Página Principal, clique em Colar.

  9. Em Colar Visualização > Nome da Tabela digite um nome como Data ou Calendário. Deixe Usar a primeira linha como os headers decoluna verificados e clique em OK.

    Visualização de Colagem

    A nova tabela de datas (denominada Calendário neste exemplo) no Power Pivot tem a seguinte aparência:

    Tabela de data no Power Pivot

    Observação: Você também pode criar uma tabela vinculada usando Adicionar ao Modelo de Dados. No entanto, isso torna sua lista de trabalho desnecessariamente grande porque a workbook tem duas versões da tabela de datas; um em Excel e um no Power Pivot..

Observação: A data do nome é uma palavra-chave no Power Pivot. Se você nomear a tabela que você criar em Data do Power Pivot, precisará colocar o nome da tabela com aspas simples em qualquer fórmula DAX que a referencia em um argumento. Todas as imagens e fórmulas de exemplo deste artigo referem-se a uma tabela de datas criada no Power Pivot chamada Calendário.

Agora você tem uma tabela de datas em seu Modelo de Dados. Você pode adicionar novas colunas de data, como Ano, Mês, etc. usando DAX.

Adicionando novas colunas de data à tabela de datas

Uma tabela de datas com uma única coluna de data que tenha uma linha para cada dia para cada ano é importante para definir todas as datas em um intervalo de datas. Também é necessário para criar uma relação entre a tabela de fatos e a tabela de datas. Mas essa coluna de data única com uma linha para cada dia não é útil ao analisar por datas em uma tabela dinâmica ou Power View relatório. Você deseja que sua tabela de datas inclua colunas que ajudam você a agregar seus dados para um intervalo ou grupo de datas. Por exemplo, você pode querer somar valores de vendas por mês ou trimestre, ou pode criar uma medida que calcule o crescimento ano a ano. Em cada um desses casos, sua tabela de datas precisa de colunas ano, mês ou trimestre que permitem agregar seus dados para esse período.

Se você importou sua tabela de datas de uma fonte de dados relacional, ela já pode incluir os diferentes tipos de colunas de data que você deseja. Em alguns casos, talvez você queira modificar algumas dessas colunas ou criar colunas de data adicionais. Isso é especialmente verdadeiro se você criar sua própria tabela de datas no Excel e copiá-la para o Modelo de Dados. Felizmente, a criação de novas colunas de datas no Power Pivot é bastante fácil com funções de data e hora no DAX.

Dica: Se você ainda não trabalhou com o DAX, um ótimo lugar para começar a aprender é com o QuickStart: Aprenda Noções básicas do DAX em 30 minutos em Office.com.

Funções data e hora do DAX

Se você já trabalhou com funções de data e hora em Excel fórmulas, provavelmente estará familiarizado com as funções Data e Hora. Embora essas funções sejam semelhantes às suas contrapartes no Excel, há algumas diferenças importantes:

  • As funções Data e Hora do DAX usam um tipo de dados de data/hora.

  • Eles podem levar valores de uma coluna como um argumento.

  • Eles podem ser usados para retornar e/ou manipular valores de data.

Essas funções são frequentemente usadas ao criar colunas de data personalizadas em uma tabela de datas, portanto, elas são importantes para entender. Vamos usar várias dessas funções para criar colunas para Year, Quarter, FiscalMonth e assim por diante.

Observação: As funções Data e Hora no DAX não são as mesmas que as funções de Inteligência de Tempo. Saiba mais sobre Inteligência de Tempo no Power Pivot no Excel 2013.

O DAX inclui as seguintes funções Data e Hora:

Há muitas outras funções DAX que você também pode usar em suas fórmulas. Por exemplo, muitas das fórmulas descritas aqui usam Funções Matemáticas e Trigonométricas como MOD e TRUNC,Funções Lógicas como IFe Funções de Texto como FORMAT Para obter mais informações sobre outras funções DAX, consulte a seção Recursos Adicionais posteriormente neste artigo.

Exemplos de fórmula para um ano de calendário

Os exemplos a seguir descrevem fórmulas usadas para criar colunas adicionais em uma tabela de datas chamada Calendário. Uma coluna, chamada Date, já existe e contém um intervalo contíguo de datas de 1/1/2010 a 31/12/2016.

Ano

=YEAR([date])

Nesta fórmula, a função YEAR retorna o ano do valor na coluna Data. Como o valor na coluna Data é do tipo de dados de data/hora, a função YEAR sabe como retornar o ano dela.

Coluna do ano

Mês

=MONTH([date])

Nesta fórmula, assim como com a função YEAR, podemos simplesmente usar a função MONTH para retornar um valor de mês da coluna Data.

Coluna do mês

Trimestre

=INT(([Month]+2)/3)

Nesta fórmula, usamos a função INT para retornar um valor de data como um inteiro. O argumento que especificamos para a função INT é o valor da coluna Mês, adicione 2 e divida-o por 3 para obter nosso trimestre, 1 a 4.

Coluna do trimestre

Nome do mês

=FORMAT([date],"mmmm")

Nesta fórmula, para obter o nome do mês, usamos a função FORMAT para converter um valor numérico da coluna Data em texto. Especificamos a coluna Data como o primeiro argumento e, em seguida, o formato; queremos que nosso nome de mês mostre todos os caracteres, portanto, usamos "mmmm". Nosso resultado tem esta aparência:

Coluna de nome do mês

Se quisermos retornar o nome do mês abreviado para três letras, usaremos "mmm" no argumento format.

Dia da semana

=FORMAT([date],"ddd")

Nesta fórmula, usamos a função FORMAT para obter o nome do dia. Como queremos apenas um nome de dia abreviado, especificamos "ddd" no argumento format.

Coluna do dia da semana
Exemplo de Tabela Dinâmica

Depois de ter campos para datas como Ano, Trimestre, Mês, etc., você pode usá-los em uma Tabela Dinâmica ou relatório. Por exemplo, a imagem a seguir mostra o campo SalesAmount da tabela de fatos Vendas em VALUES e Ano e Trimestre da tabela de dimensão Calendário em ROWS. SalesAmount é agregado para contexto de ano e trimestre.

Exemplo de Tabela Dinâmica

Exemplos de fórmula para um ano fiscal

Ano Fiscal

=IF([Month]<= 6,[Year],[Year]+1)

Neste exemplo, o ano fiscal começa em 1º de julho.

Não há nenhuma função que possa extrair um ano fiscal de um valor de data porque as datas de início e término de um ano fiscal geralmente são diferentes das de um ano de calendário. Para obter o ano fiscal, primeiro usamos uma função IF para testar se o valor para Month é menor ou igual a 6. No segundo argumento, se o valor de Month for menor ou igual a 6, retorne o valor da coluna Ano. Caso não seja, retorne o valor de Year e adicione 1.

Coluna de ano fiscal

Outra maneira de especificar um valor de mês de fim de ano fiscal é criar uma medida que simplesmente especifica o mês. Por exemplo, FYE:=6. Em seguida, você pode fazer referência ao nome da medida no lugar do número do mês. Por exemplo, =IF([Month]<=[FYE],[Year],[Year]+1). Isso oferece mais flexibilidade ao fazer referência ao mês final do ano fiscal em várias fórmulasdiferentes.

Mês Fiscal

=IF([Month]<= 6, 6+[Month], [Month]- 6)

Nesta fórmula, especificamos se o valor para [Mês] é menor ou igual a 6, em seguida, pegue 6 e adicione o valor de Month, caso contrário, subtraia 6 do valor de [Mês].

Coluna de mês fiscal

Trimestre Fiscal

=INT(([FiscalMonth]+2)/3)

A fórmula que usamos para FiscalQuarter é muito igual à do trimestre do ano calendário. A única diferença é que especificamos [FiscalMonth] em vez de [Mês].

Coluna de trimestre fiscal

Feriados ou datas especiais

Talvez você queira incluir uma coluna de datas que indica que determinadas datas são feriados ou alguma outra data especial. Por exemplo, você pode querer somar totais de vendas para o dia de Ano Novo adicionando um campo Holiday a uma Tabela Dinâmica, como uma slicer ou filtro. Em outros casos, talvez você queira excluir essas datas de outras colunas de data ou em uma medida.

Incluir feriados ou dias especiais é bastante simples. Você pode criar uma tabela em Excel que tenha as datas que deseja incluir. Em seguida, você pode copiar ou usar Add to Data Model para adicioná-lo ao Modelo de Dados como uma tabela vinculada. Na maioria dos casos, não é necessário criar uma relação entre a tabela e a tabela Calendar. Qualquer fórmula que faz referência a ela pode usar a função LOOKUPVALUE para retornar valores.

Veja a seguir um exemplo de uma tabela criada Excel que inclui feriados a serem adicionados à tabela de datas:

Data

Feriado

1/1/2010

Anos Novos

11/25/2010

Ação de Graças

12/25/2010

Natal

01.01.11

Anos Novos

11/24/2011

Ação de Graças

12/25/2011

Natal

01.01.12

Anos Novos

22.11.12

Ação de Graças

12/25/2012

Natal

1/1/2013

Anos Novos

11/28/2013

Ação de Graças

12/25/2013

Natal

11/27/2014

Ação de Graças

12/25/2014

Natal

01/01/2014

Anos Novos

11/27/2014

Ação de Graças

12/25/2014

Natal

1/1/2015

Anos Novos

11/26/2014

Ação de Graças

12/25/2015

Natal

01.01.16

Anos Novos

11/24/2016

Ação de Graças

12/25/2016

Natal

Na tabela de datas, criamos uma coluna chamada Holiday e usamos uma fórmula como esta:

=LOOKUPVALUE(Holidays[Holiday],Holidays[date],Calendar[date])

Vamos ver essa fórmula com mais cuidado.

Usamos a função LOOKUPVALUE para obter valores da coluna Feriado na tabela Feriados. No primeiro argumento, especificamos a coluna onde nosso valor de resultado estará. Especificamos a coluna Feriado na tabela Feriados porque esse é o valor que desejamos retornar.

=LOOKUPVALUE(Holidays[Holiday],Holidays[date],Calendar[date])

Em seguida, especificamos o segundo argumento, a coluna de pesquisa que tem as datas que desejamos pesquisar. Especificamos a coluna Data na tabela Feriados, assim:

=LOOKUPVALUE(Holidays[Holiday],Holidays[date],Calendar[date])

Por fim, especificamos a coluna em nossa tabela Calendário que tem as datas que desejamos pesquisar na tabela Feriado. Isso, claro, é a coluna Data na tabela Calendário.

=LOOKUPVALUE(Holidays[Holiday],Holidays[date],Calendar[date])

A coluna Feriado retornará o nome de feriado para cada linha que tenha um valor de data que corresponde a uma data na tabela Feriados.

Tabela Feriado

Calendário personalizado - treze períodos de quatro semanas

Algumas organizações, como o serviço de varejo ou de alimentação, geralmente relatam períodos diferentes, como treze períodos de quatro semanas. Com um calendário de 13 períodos de quatro semanas, cada período é de 28 dias; portanto, cada período contém quatro segundas-feiras, quatro terças-feiras, quatro quartas-feiras e assim por diante. Cada período contém o mesmo número de dias e, normalmente, os feriados se enquadram no mesmo período a cada ano. Você pode optar por iniciar um período em qualquer dia da semana. Assim como com datas em um calendário ou ano fiscal, você pode usar o DAX para criar colunas adicionais com datas personalizadas.

Nos exemplos abaixo, o primeiro período completo começa no primeiro domingo do ano fiscal. Nesse caso, o ano fiscal começa em 7/1.

Semana

Esse valor nos dá o número da semana que começa com a primeira semana completa no ano fiscal. Neste exemplo, a primeira semana completa começa no domingo, portanto, a primeira semana completa no primeiro ano fiscal da tabela Calendário começa em 4/07/2010 e continua até a última semana completa na tabela Calendário. Embora esse valor em si não seja tão útil na análise, é necessário calcular para uso em outras fórmulas de período de 28 dias.

=INT([date]-40356)/7)

Vamos ver essa fórmula com mais cuidado.

Primeiro, criamos uma fórmula que retorna valores da coluna Data como um inteiro, assim:

=INT([date])

Em seguida, queremos procurar o primeiro domingo do primeiro ano fiscal. Vemos que é 4/07/2010.

Coluna da semana

Agora, subtraia 40356 (que é o inteiro para 27/6/2010, o último domingo do ano fiscal anterior) desse valor para obter o número de dias desde o início dos dias em nossa tabela calendário, como esta:

=INT([date]-40356)

Em seguida, divida o resultado por 7 (dias em uma semana), assim:

=INT(([date]-40356)/7)

O resultado tem esta aparência:

Coluna da semana

Período

O período neste calendário personalizado contém 28 dias e sempre começará em um domingo. Esta coluna retornará o número do período que começa com o primeiro domingo do primeiro ano fiscal.

=INT(([Week]+3)/4)

Vamos ver essa fórmula com mais cuidado.

Primeiro, criamos uma fórmula que retorna um valor da coluna Semana como um inteiro, assim:

=INT([Week])

Em seguida, adicione 3 a esse valor, assim:

=INT([Week]+3)

Em seguida, divida o resultado por 4, assim:

=INT(([Week]+3)/4)

O resultado tem esta aparência:

Coluna Período

Ano Fiscal do Período

Esse valor retorna o ano fiscal de um período.

=INT(([Period]+12)/13)+2008

Vamos ver essa fórmula com mais cuidado.

Primeiro, criamos uma fórmula que retorna um valor de Period e adiciona 12:

= ([Period]+12)

Dividimos o resultado por 13, pois há 13 períodos de 28 dias no ano fiscal:

=(([Period]+12)/13)

Adicionamos 2010, pois esse é o primeiro ano na tabela:

=(([Period]+12)/13)+2010

Por fim, usamos a função INT para remover qualquer fração do resultado e retornar um número inteiro, quando dividido por 13, assim:

=INT(([Period]+12)/13)+2010

O resultado tem esta aparência:

Coluna Ano Fiscal do período

Período em FiscalYear

Esse valor retorna o número de período, de 1 a 13, começando com o primeiro período completo (começando no domingo) em cada ano fiscal.

=IF(MOD([Period],13), MOD([Period],13),13)

Essa fórmula é um pouco mais complexa, portanto, vamos descrevê-la primeiro em um idioma que entendemos melhor. Esta fórmula afirma, divida o valor de [Período] por 13 para obter um número de período (1-13) no ano. Se esse número for 0, retorne 13.

Primeiro, criamos uma fórmula que retorna o restante do valor de Period por 13. Podemos usar as funções MOD (Matemática e Trigonométrica) assim:

=MOD([Period],13)

Isso, na maioria das vezes, nos dá o resultado que queremos, exceto quando o valor para Period é 0 porque essas datas não se enquadram no primeiro ano fiscal, como nos primeiros cinco dias da tabela de datas do calendário de exemplo. Podemos tratar disso com uma função IF. Caso nosso resultado seja 0, retornaremos 13, assim:

=IF(MOD([Period],13),MOD([Period],13),13)

O resultado tem esta aparência:

Coluna Período em Ano Fiscal

Exemplo de Tabela Dinâmica

A imagem abaixo mostra uma Tabela Dinâmica com o campo SalesAmount da tabela de fatos Vendas em VALUES e campos PeriodFiscalYear e PeriodInFiscalYear da tabela de dimensões de data do calendário em ROWS. SalesAmount é agregado para o contexto por ano fiscal e período de 28 dias no ano fiscal.

Exemplo de Tabela Dinâmica para o ano fiscal

Relações

Depois de criar uma tabela de datas em seu Modelo de Dados, para começar a navegar seus dados em Tabelas Dinâmicas e relatórios e agregar dados com base nas colunas na tabela de dimensões de data, você precisa criar uma relação entre a tabela de fatos com seus dados de transação e a tabela de datas.

Como você precisa criar uma relação com base em datas, você precisará se certificar de criar essa relação entre colunas cujos valores são do tipo de dados datetime (Data).

Para cada valor de data na tabela de fatos, a coluna de busca relacionada na tabela de datas deve conter valores correspondentes. Por exemplo, uma linha (registro de transação) na tabela de fatos vendas com um valor de 15/8/2012 12:00 am na coluna DateKey deve ter um valor correspondente na coluna Data relacionada na tabela data (nomeada calendário). Esse é um dos motivos mais importantes pelos quais você deseja que sua coluna de datas na tabela de datas contenha um intervalo contíguo de datas que inclua qualquer data possível em sua tabela de fatos.

Criar relações no Modo de Exibição de Diagrama

Observação: Embora a coluna de data em cada tabela deve ser do mesmo tipo de dados (Data), o formato de cada coluna não importa..

Observação: Se o Power Pivot não permitir que você crie relações entre as duas tabelas, os campos de data podem não armazenar a data e a hora no mesmo nível de precisão. Dependendo da formatação da coluna, os valores podem ter a mesma aparência, mas são armazenados de forma diferente. Leia mais sobre como trabalhar com o tempo.

Observação: Evite usar chaves substitutas inteiros em relacionamentos. Quando você importa dados de uma fonte de dados relacional, muitas vezes as colunas de data e hora são representadas por uma chave substituta, que é uma coluna inteira usada para representar uma data exclusiva. No Power Pivot, você deve evitar a criação de relações usando chaves de data/hora inteiros e, em vez disso, use colunas que contenham valores exclusivos com um tipo de dados de data. Embora o uso de chaves substitutas seja considerado uma prática em data warehouses tradicionais, as chaves inteiras não são necessárias no Power Pivot e podem dificultar o grupo de valores em Tabelas Dinâmicas por diferentes períodos de data.

Se você receber um erro de incompatibilidade de tipo ao tentar criar um relacionamento, é provável que a coluna na tabela de fatos não seja do tipo de dados Date. Isso pode acontecer quando o Power Pivot não pode converter automaticamente uma data não-data (geralmente um tipo de dados de texto) para um tipo de dados de data. Você ainda pode usar a coluna em sua tabela de fatos, mas você terá que converter os dados com uma fórmula DAX em uma nova coluna calculada. Consulte Converter datas de tipo de dados de texto para um tipo de dados de data posteriormente no apêndice.

Vários relacionamentos

Em alguns casos, pode ser necessário criar várias relações ou criar várias tabelas de datas. Por exemplo, se houver vários campos de data na tabela de fatos Vendas, como DateKey, ShipDate e ReturnDate, todos eles poderão ter relações com o campo Data na tabela Data do calendário, mas apenas um deles pode ser uma relação ativa. Nesse caso, como DateKey representa a data da transação e, portanto, a data mais importante, isso seria melhor servir como a relação ativa. Os outros têm relações inativas.

A tabela dinâmica a seguir calcula o total de vendas por Ano Fiscal e Trimestre Fiscal. Uma medida denominada Total de Vendas, com a fórmula Total de Vendas:=SUM([SalesAmount]), é colocada em VALUES, e os campos FiscalYear e FiscalQuarter da tabela de datas do calendário são colocados em ROWS.

Tabela dinâmica do total de vendas por trimestre fiscal Lista de Campo da Tabela Dinâmica

Essa Tabela Dinâmica direta funciona corretamente porque queremos somar o total de vendas pela data datransação em DateKey. Nossa medida Total de Vendas usa as datas em DateKey e é resumida por ano fiscal e trimestre fiscal porque há uma relação entre DateKey na tabela Vendas e a coluna Data na tabela Data.

Relações inativas

Mas, e se nós quisermos somar nosso total de vendas não por data de transação, mas por data de lançamento? Precisamos de uma relação entre a coluna ShipDate na tabela Vendas e a coluna Data na tabela Calendário. Se não criarmos essa relação, nossas agregaçãos serão sempre baseadas na data da transação. No entanto, podemos ter várias relações, mesmo que apenas uma possa estar ativa e, como a data da transação é a mais importante, ela obtém a relação ativa com a tabela Calendário.

Nesse caso, ShipDate tem uma relação inativa, portanto, qualquer fórmula de medida criada para agregar dados com base em datas de nave deve especificar a relação inativa usando a função USERELATIONSHIP.

Por exemplo, como há uma relação inativa entre a coluna ShipDate na tabela Vendas e a coluna Data na tabela Calendário, podemos criar uma medida que soma o total de vendas por data de lançamento. Usamos uma fórmula como esta para especificar a relação a ser usada:

Total de vendas por data de nave:=CALCULATE(SUM(Sales[SalesAmount]), USERELATIONSHIP(Sales[ShipDate], Calendar[Date]))

Esta fórmula simplesmente declara: Calcular uma soma para SalesAmount, mas filtrar usando a relação entre a coluna ShipDate na tabela Vendas e a coluna Data na tabela Calendário.

Agora, se criarmos uma Tabela Dinâmica e colocarmos a medida Total de Vendas por Data de Nave em VALORES, e Ano Fiscal e Trimestre Fiscal em LINHAS, veremos o mesmo Total Geral, mas todos os outros valores de soma para o ano fiscal e o trimestre fiscal são diferentes porque eles são baseados na data do barco e não na data da transação.

Tabela dinâmica de vendas totais por data de envio Lista de Campo da Tabela Dinâmica

O uso de relações inativas permite que você use apenas uma tabela de datas, mas exige que todas as medidas (como Total de Vendas por Data de Nave), referenciam a relação inativa em sua fórmula. Há outra alternativa, ou seja, usar várias tabelas de datas.

Várias tabelas de data

Outra maneira de trabalhar com várias colunas de datas em sua tabela de fatos é criar várias tabelas de datas e criar relações ativas separadas entre elas. Vamos ver nosso exemplo de tabela de vendas novamente. Temos três colunas com datas em que podemos querer agregar dados:

  • Um DateKey com a data de venda para cada transação.

  • ShipDate – com a data e a hora em que os itens vendidos foram enviados para o cliente.

  • Um ReturnDate – com a data e a hora em que um ou mais itens retornados foram recebidos.

Lembre-se de que o campo DateKey com a data da transação é o mais importante. Faremos a maioria de nossas agregaçãos com base nessas datas, portanto, certamente queremos uma relação entre ela e a coluna Data na tabela Calendário. Se não quisermos criar relações inativas entre ShipDate e ReturnDate e o campo Data na tabela Calendário, exigindo fórmulas de medida especial, podemos criar tabelas de datas adicionais para data e data de retorno. Em seguida, podemos criar relações ativas entre eles.

Relações com várias tabelas de data no Modo de Exibição de Diagrama

Neste exemplo, criamos outra tabela de datas chamada ShipCalendar. Isso, claro, também significa criar colunas de datas adicionais e, como essas colunas de datas estão em uma tabela de datas diferente, queremos nomeá-las de forma que as diferencie das mesmas colunas na tabela Calendário. Por exemplo, criamos colunas chamadas ShipYear, ShipMonth, ShipQuarter e assim por diante.

Se criarmos nossa Tabela Dinâmica e colocarmos nossa medida de Vendas Totais em VALUES, e ShipFiscalYear e ShipFiscalQuarter em LINHAS, veremos os mesmos resultados que vimos ao criarmos uma relação inativa e um campo calculado Especial Total de Vendas por Data de Nave.

Tabela dinâmica de vendas totais por data de envio com calendário de envio lista de campos de tabela dinâmica

Cada uma dessas abordagens requer uma consideração cuidadosa. Ao usar várias relações com uma única tabela de datas, talvez seja preciso criar medidas especiais que transitem em relações inativas usando a função USERELATIONSHIP. Por outro lado, a criação de várias tabelas de datas pode ser confusa em uma Lista de Campos e, como você tem mais tabelas no Modelo de Dados, ela exigirá mais memória. Experimente o que funciona melhor para você.

Propriedade Date Table

A propriedade Date Table define metadados necessários Time-Intelligence funções como TOTALYTD, PREVIOUSMONTH e DATESBETWEEN para funcionar corretamente. Quando um cálculo é executado usando uma dessas funções, o mecanismo de fórmula do Power Pivot sabe para onde ir para obter as datas de que precisa.

Aviso: Se essa propriedade não estiver definida, as medidas usando o DAX Time-Intelligence funções podem não retornar os resultados corretos.

Ao definir a propriedade Tabela de Datas, especifique uma tabela de datas e uma coluna de data do tipo de dados Data (data/hora).

Caixa de diálogo Marcar Como Tabela de Data

Como: definir a propriedade Date Table

  1. Na janela PowerPivot, selecione a tabela Calendário.

  2. Na guia Design, clique em Marcar como tabela de datas.

  3. Na caixa de diálogo Marcar como Tabela de Data, selecione uma coluna com valores exclusivos e o tipo de dados Data.

Trabalhando com tempo

Todos os valores de data com um tipo de dados Date Excel ou SQL Server são realmente um número. Incluídos nesse número estão dígitos que se referem a uma hora. Em muitos casos, esse tempo para cada linha é meia-noite. Por exemplo, se um campo DateTimeKey em uma tabela de fatos vendas tiver valores como 19/10/2010 12:00:00 AM, isso significa que os valores são para o nível de precisão do dia. Se os valores de campo DateTimeKey têm uma hora incluída, por exemplo, 19/10/2010 8:44:00 AM, isso significa que os valores são para o nível de precisão minuto. Os valores também podem ser para a precisão de nível de hora ou até mesmo o nível de precisão de segundos. O nível de precisão no valor de tempo terá um impacto significativo sobre como você criar sua tabela de datas e as relações entre ela e sua tabela de fatos.

Você precisa determinar se irá agregar seus dados a um nível de precisão de dia ou a um nível de precisão de tempo. Em outras palavras, talvez você queira usar colunas em sua tabela de datas, como Manhã, Tarde ou Hora, como campos de data de hora em áreas de Linha, Coluna ou Filtro de tabela dinâmica.

Observação: Dias são a menor unidade de tempo com a que as funções de Inteligência de Tempo do DAX podem funcionar. Se você não precisar trabalhar com valores de tempo, deverá reduzir a precisão de seus dados para usar dias como a unidade mínima.

Se você pretende agregar seus dados ao nível de hora, sua tabela de datas precisará de uma coluna de datas com a hora incluída. Na verdade, ele precisará de uma coluna de data com uma linha para cada hora, ou talvez até mesmo a cada minuto, de cada dia, para cada ano no intervalo de datas. Isso ocorre porque, para criar uma relação entre a coluna DateTimeKey na tabela de fatos e a coluna de datas na tabela de datas, você deve ter valores correspondentes. Como você pode imaginar, se você incluir muitos anos, isso pode fazer com que uma tabela de datas muito grande.

Na maioria dos casos, porém, você deseja agregar seus dados somente ao dia. Em outras palavras, você usará colunas como Ano, Mês, Semana ou Dia da Semana como campos nas áreas Linha, Coluna ou Filtro de uma Tabela Dinâmica. Nesse caso, a coluna de datas na tabela de datas precisa conter apenas uma linha para cada dia em um ano, conforme descrito anteriormente.

Se sua coluna de datas incluir um nível de precisão de tempo, mas você agregará apenas a um nível de dia, para criar a relação entre a tabela de fatos e a tabela de datas, talvez seja preciso modificar sua tabela de fatos criando uma nova coluna que trunca os valores na coluna de datas para um valor de dia. Em outras palavras, converta um valor como 19/10/2010 8:44:00 para 19/10/2010 12:00:00AM . Em seguida, você pode criar a relação entre essa nova coluna e a coluna de datas na tabela de datas porque os valores corresponderão.

Vamos ver um exemplo. Esta imagem mostra uma coluna DateTimeKey na tabela de fatos Vendas. Todas as agregaçãos para os dados nesta tabela só precisam estar no nível do dia, usando colunas na tabela de datas do calendário, como Ano, Mês, Trimestre, etc. O tempo incluído no valor não é relevante, apenas a data real.

Coluna DateTimeKey

Como não precisamos analisar esses dados para o nível de tempo, não precisamos da coluna Data na tabela de datas do calendário para incluir uma linha para cada hora e cada minuto de cada dia em cada ano. Portanto, a coluna Data em nossa tabela de datas tem esta aparência:

Coluna de data no Power Pivot

Para criar uma relação entre a coluna DateTimeKey na tabela Vendas e a coluna Data na tabela Calendário, podemos criar uma nova coluna calculada na tabela de fatos Vendas e usar a função TRUNC para truncar o valor de data e hora na coluna DateTimeKey em um valor de data que corresponde aos valores na coluna Data na tabela Calendário. Nossa fórmula tem esta aparência:

=TRUNC([DateTimeKey],0)

Isso nos dá uma nova coluna (nomeada DateKey) com a data da coluna DateTimeKey e uma hora de 12:00:00 AM para cada linha:

Coluna DateKey

Agora podemos criar uma relação entre essa nova coluna (DateKey) e a coluna Data na tabela Calendário.

Da mesma forma, podemos criar uma coluna calculada na tabela Vendas que reduz a precisão de tempo na coluna DateTimeKey para o nível de precisão de hora. Nesse caso, a função TRUNC não funcionará, mas ainda podemos usar outras funções Data e Hora do DAX para extrair e concatenar um novo valor para um nível de precisão de hora. Podemos usar uma fórmula como esta:

= DATA (YEAR([DateTimeKey]), MONTH([DateTimeKey]), DAY([DateTimeKey]) ) ) + HORA (HOUR([DateTimeKey]), 0, 0)

Nossa nova coluna tem esta aparência:

Coluna DateTimeKey

Desde que nossa coluna Data na tabela de datas tenha valores para o nível de precisão de hora, podemos criar uma relação entre eles.

Tornando as datas mais usáveis

Muitas das colunas de datas que você cria em sua tabela de datas são necessárias para outros campos, mas realmente não são tão úteis na análise. Por exemplo, o campo DateKey na tabela Vendas que nos referimos e mostramos ao longo deste artigo é importante porque para cada transação, essa transação é registrada como ocorrendo em uma determinada data e hora. Mas, do ponto de vista de análise e relatório, não é tão útil porque não podemos usá-lo como um campo de linha, coluna ou filtro em uma tabela dinâmica ou relatório.

Da mesma forma, no nosso exemplo, a coluna Data na tabela Calendário é muito útil, crítica na verdade, mas você não pode usá-la como uma dimensão em uma tabela dinâmica.

Para manter tabelas e colunas neles o mais útil possível e tornar as listas de campos de tabela dinâmica ou Power View de relatório mais fáceis de navegar, é importante ocultar colunas desnecessárias das ferramentas do cliente. Você também pode querer ocultar determinadas tabelas. A tabela Feriados mostrada anteriormente contém datas de feriado importantes para determinadas colunas na tabela Calendário, mas você não pode usar as colunas Data e Feriado na tabela Feriados por conta própria como campos em uma Tabela Dinâmica. Aqui novamente, para facilitar a navegação das Listas de Campos, você pode ocultar toda a tabela Feriados.

Outro aspecto importante de trabalhar com datas é a nomenis. Você pode nomear tabelas e colunas no Power Pivot o que quiser. Mas tenha em mente, especialmente se você estiver compartilhando sua lista de trabalho com outros usuários, uma boa convenção de nomenização facilita a identificação de tabelas e datas, não apenas em Listas de Campos, mas também no Power Pivot e em fórmulas DAX.

Depois de ter uma tabela de datas em seu Modelo de Dados, você pode começar a criar medidas que o ajudarão a obter o máximo de seus dados. Alguns podem ser tão simples quanto somar totais de vendas do ano atual, e outros podem ser mais complexos, onde você precisa filtrar um intervalo específico de datas exclusivas. Saiba mais em Medidas em Power Pivot e Funções de Inteligência de Tempo.

Apêndice

Converter datas de tipo de dados de texto para um tipo de dados de data

Em alguns casos, uma tabela de fatos com dados de transação pode conter datas do tipo de dados de texto. Ou seja, uma data que aparece como 2012-12-04T11:47:09 não é de fato uma data, ou pelo menos não o tipo de data que o Power Pivot pode entender. Na verdade, é apenas texto que se lê como uma data. Para criar uma relação entre uma coluna de datas na tabela de fatos e uma coluna de data em uma tabela de datas, ambas as colunas devem ser do tipo de dados Date.

Normalmente, quando você tenta alterar o tipo de dados de uma coluna de datas que são tipo de dados de texto para um tipo de dados de data, o Power Pivot pode interpretar as datas e convertê-la em um tipo de dados de data verdadeiro automaticamente. Se o Power Pivot não puder fazer uma conversão de tipo de dados, você receberá um erro de incompatibilidade de tipo.

No entanto, você ainda pode converter as datas em um tipo de dados de data verdadeiro. Você pode criar uma nova coluna calculada e usar uma fórmula DAX para analisar o ano, mês, dia, hora, etc. das cadeias de caracteres de texto e concatená-la novamente de uma maneira que o Power Pivot possa ler como uma data verdadeira.

Neste exemplo, importamos uma tabela de fatos chamada Vendas para o Power Pivot. Ele contém uma coluna chamada DateTime. Os valores aparecem assim:

Colunas DateTime em uma tabela de fatos.

Se olharmos para o Tipo de Dados na guia Página Início do grupo de formatação do Power Pivot, veremos que é tipo de dados text.

Tipo de dados na faixa de opções

Não é possível criar uma relação entre a coluna DateTime e a coluna Data em nossa tabela de datas porque os tipos de dados não combinam. Se tentarmos alterar o tipo de dados para Date,obteremos um erro de incompatibilidade de tipo:

Erro de incompatibilidade

Nesse caso, o Power Pivot não pôde converter o tipo de dados do texto para a data. Ainda podemos usar essa coluna, mas, para que ela seja usada em um tipo de dados de data verdadeiro, precisamos criar uma nova coluna que analisará o texto e a crie em um valor que o Power Pivot possa tornar um tipo de dados Date.

Lembre-se, na seção Trabalhando com tempo anteriormente neste artigo; a menos que seja necessário que sua análise seja para um nível de precisão de hora do dia, você deve converter datas em sua tabela de fatos para um nível de precisão de dia. Com isso em mente, queremos que os valores em nossa nova coluna sejam no nível de precisão do dia (excluindo o tempo). Podemos converter os valores na coluna DateTime para um tipo de dados de data e remover o nível de precisão de hora com a seguinte fórmula:

=DATE(LEFT([DateTime],4), MID([DateTime],6,2), MID([DateTime],9,2))

Isso nos dá uma nova coluna (nesse caso, chamada Date). O Power Pivot até detecta os valores como datas e define o tipo de dados automaticamente como Data.

Coluna de data na tabela de fatos

Se quisermos preservar o nível de precisão de tempo, basta estender a fórmula para incluir as horas, minutos e segundos.

=DATE(LEFT([DateTime],4), MID([DateTime],6,2), MID([DateTime],9,2)) +

TIME(MID([DateTime],12,2), MID([DateTime],15,2), MID([DateTime],18,2))

Agora que temos uma coluna Data do tipo de dados Date, podemos criar uma relação entre ela e uma coluna de data em uma data.

Recursos adicionais

Datas no Power Pivot

Cálculos no Power Pivot

Início rápido: aprenda os fundamentos de DAX em 30 minutos

Referência de expressões de análise de dados

Central de Recursos do DAX

Precisa de mais ajuda?

Quer mais opções

Explore os benefícios da assinatura, procure cursos de treinamento, saiba como proteger seu dispositivo e muito mais.

As comunidades ajudam você a fazer e responder perguntas, fazer comentários e ouvir especialistas com conhecimento avançado.

Essas informações foram úteis?

Qual é o seu grau de satisfação com a qualidade do idioma?
O que afetou sua experiência?
Ao pressionar enviar, seus comentários serão usados para aprimorar os produtos e serviços da Microsoft. Seu administrador de TI poderá coletar esses dados. Política de Privacidade.

Agradecemos seus comentários!

×