BASE DE DADOS DE CONHECIMENTO

Combinação de vários campos de dados


Publicado: 24 Apr 2017
Data da última modificação: 09 Apr 2024

Pergunta

Como combinar vários campos de data em um único eixo ou cabeçalho de data.

Por exemplo, cada pedido tem uma [Order Date (Data do pedido)] e uma [Ship Date (Data de envio)]. O objetivo final é mostrar um gráfico de linhas ou uma tabela de referência cruzada que contenha o número de pedidos feitos e enviados por mês. Se [Order Date] for usado como o eixo ou o cabeçalho, o número de pedidos enviados por mês será incorreto, e vice-versa.

Ambiente

Tableau Desktop

Resposta

A pasta de trabalho de exemplo em anexo usa o conjunto de dados de amostra Superstore para demonstrar todas as opções.
CLIQUE PARA EXPANDIR A SOLUÇÃO
Opção 1: dinamizar os campos de data
  1. Dinamize os campos de data, para que haja somente um campo com dados de data, além de um segundo campo como "Evento" que descreve se o evento é "pedido concluído" ou "pedido enviado" Observação: para algumas fontes de dados, a dinamização pode ser feita diretamente no Tableau Desktop. Para obter informações detalhadas, consulte Dinamizar dados de colunas para linhas
  2. Clique com o botão direito do mouse em [Pivot Field Values (Valores do campo dinâmico)] e arraste-o para a divisória Linhas.
  3. Na caixa de diálogo Soltar campo, selecione MY(Pivot Field Values) e clique em OK
  4. Clique com o botão direito do mouse em [Pivot Field Names (Nomes de campo dinâmico)] no painel Dados e selecione Aliases…
  5. Na caixa de diálogo Editar aliases, digite um alias mais descritivo para Data do pedido e para Data de envio e clique em OK
  6. Arraste [Pivot Field Names (Nomes de campo dinâmico)] para a divisória Colunas
  7. Clique com o botão direito do mouse em [Order ID (ID do pedido)] e arraste-o para Texto no cartão Marcas
  8. Na caixa de diálogo Soltar campo, selecione CNTD(Order ID) e clique em OK
CLIQUE PARA EXPANDIR A SOLUÇÃO
Opção 2: usar um cálculo LOD
Esta opção requer que cada campo de data tenha no mínimo um registro para cada compartimento de data na exibição. Neste exemplo, cada linha refere-se a um mês, logo tanto [Order Date (Data do pedido] e [Ship Date (Data de envio)] devem ter no mínimo um pedido para cada mês.
  1. Escolha um campo de data para criar o eixo de data ou os cabeçalhos. Este exemplo usa [Order Date (Data do pedido)]
  2. Clique com o botão direito do mouse em [Order Date (Data do pedido)] e arraste-o para a divisória Linhas
  3. Na caixa de diálogo Soltar campo, selecione MY(Order Date) com o ícone # azul e clique em OK
  4. Clique com o botão direito do mouse em [Order ID (ID do pedido)] e arraste-o para Texto no cartão Marcas
  5. Na caixa de diálogo Soltar campo, selecione CNTD(Order ID)
  6. Clique com o botão direito do mouse no cabeçalho "Contagem distinta da ID do pedido" na exibição e selecione Editar alias…
  7. Na caixa de diálogo Editar alias, digite um novo nome e clique em OK
  8. Crie um campo calculado com o nome "Pedidos enviados" com um cálculo semelhante ao seguinte:

    MIN(
    IF DATETRUNC('month', [Order Date]) = DATETRUNC('month', [Ship Date])
    THEN { FIXED DATETRUNC('month', [Ship Date]) : COUNTD([Order ID]) }
    END
    )


    9. Clique duas vezes em [Orders Shipped (Pedidos enviados)] no painel Dados para adicionar o campo à exibição

     
CLIQUE PARA EXPANDIR A SOLUÇÃO
Opção 3: usar scaffolding de data
Esta opção requer que um campo de data sempre seja precedente a outro campo de data, e tem melhor funcionamento quando dois campos de data estiverem definindo um intervalo.
  1. Crie uma tabela que contenha uma lista completa de todas as possíveis datas, que será unida à conexão de dados original. Neste exemplo, essa tabela é chamada "Lista completa de datas"
  2. Acesse a guia Fonte de dados no Tableau Desktop
  3. Adicione a tabela "Planilha 1" à área do canvas
  4. Na caixa de diálogo União, faça o seguinte:
    1. Selecione Esquerda
    2. Em Fonte de dados, selecione Data do pedido
    3. Em Planilha 1, selecione Data
    4. Clique no símbolo de igual e selecione <=
    5. Em Fonte de dados, clique em Adicionar nova cláusula de união e selecione Data de envio
    6. Em Planilha 1, selecione Data
    7. Clique no símbolo de igual e selecione >=
  5. Selecione Análise > Criar campo calculado.
  6. Na caixa de diálogo Campo calculado que é aberta, execute as etapas a seguir e clique OK:
    1. Nomeie o campo calculado. Neste exemplo, o campo calculado é chamado "Pedidos concluídos"
    2. No campo de fórmula, crie um campo calculado similar ao seguinte:
      COUNTD(
      IF DATETRUNC('month', [Order Date]) = DATETRUNC('month', [Date])
      THEN [Order ID]
      END
      )
  7. Crie um campo calculado com o nome "Pedidos enviados" com um cálculo semelhante ao seguinte:
    COUNTD(
    IF DATETRUNC('month', [Ship Date]) = DATETRUNC('month', [Date])
    THEN [Order ID]
    END
    )
  8. Clique com o botão direito do mouse em [Date (Data)] e arraste-o para a divisória Linhas
  9. Na caixa de diálogo Soltar campo, selecione MY(Date) e clique em OK
  10. Arraste [Orders Placed (Pedidos concluídos)] para Texto no cartão Marcas
  11. Clique duas vezes em [Orders Shipped (Pedidos enviados)] no painel Dados para adicionar o campo à exibição
CLIQUE PARA EXPANDIR A SOLUÇÃO
Opção 4: usar combinação de dados
Esta opção não funcionará com um intervalo de datas.
  1. Crie uma tabela que contenha uma lista completa de todas as possíveis datas, e crie uma nova conexão para essa lista. Neste exemplo, a conexão é chamada "Planilha1 (lista completa de datas)"
  2. Navegue até Dados > Sample - Superstore > Duplicar. Neste exemplo, nomeamos as duas cópias de "Sample - Superstore" como "Sample - Superstore (vínculo com data do pedido)" e "Sample - Superstore (vínculo com data de envio)" para evitar confusões.
  3. Navegue até Dados > Editar relacionamentos.
  4. Na caixa de diálogo Relacionamentos, faça o seguinte:
    1. Para Fonte de dados primária, selecione Planilha1 (lista completa de datas)
    2. Para fonte de dados secundária, selecione Sample - Superstore (vínculo com data do pedido)
    3. Selecione o botão de opção Personalizar
    4. Clique em Adicionar…
  5. Na caixa de diálogo Adicionar/Editar mapeamento de campo, faça o seguinte:
    1. Clique na seta próxima a Data para abrir as opções de data
    2. Selecione o nível de data correspondente ao nível de data mais granular usado na exibição. Neste exemplo, a exibição usa MY(Date).
    3. No painel à direita, clique na seta próxima a Data do pedido
    4. Selecione o nível de data correspondente para Data do pedido
    5. Clique em OK.
  6. Repita as etapas 4-5 com "Sample - Superstore (vínculo com data de envio)" como a fonte de dados secundária, e adicione um relacionamento em MY(Date) = MY(Ship Date)
  7. Clique em OK na caixa de diálogo Relacionamentos.
  8. Em uma nova planilha, clique com o botão direito do mouse em [Date (Data)] e arraste-o da conexão de dados "Planilha1 (lista completa de datas)" para a exibição
  9. Na caixa de diálogo Soltar campo, selecione MY(Date) e clique em OK
  10. Clique com o botão direito do mouse no cabeçalho "Contagem distinta da ID do pedido" na exibição e selecione Editar alias…
  11. Na caixa de diálogo Editar alias, digite um nome mais descritivo e clique em OK
  12. Clique com o botão direito do mouse em [Order ID (ID do pedido)] e arraste-o da fonte de dados "Sample - Superstore (vínculo com data do pedido)" para Texto no rótulo Marcas
  13. Na caixa de diálogo Soltar campo, selecione CNTD(Order ID) e clique em OK
  14. Clique com o botão direito do mouse em [Order ID (ID do pedido)] e arraste-o da fonte de dados "Sample - Superstore (vínculo com data de envio)" para Texto no rótulo Marcas
  15. Na caixa de diálogo Soltar campo, selecione CNTD(Order ID) e clique em OK
  16. Arraste CNTD(Order ID) de Detalhe no cartão Marcas sobre os números na exibição e solte o campo
  17. Na caixa de diálogo Editar alias, digite um nome mais descritivo e clique em OK

Informações adicionais

Observações sobre a opção 2 (expressão de nível de detalhe):
  • Cada campo de data deve ter no mínimo um registro referente ao nível de data usado na exibição
  • A expressão FIXED retornará a contagem distinta total de pedidos enviados para cada mês em [Ship Date (Data de envio)], independentemente de qual mês de [Ship Date (Data de envio)] aparece na exibição. Por exemplo, pedidos enviados em fevereiro eram incluídos em janeiro e fevereiro. Portanto, a expressão FIXED por si só retornaria 59 pedidos tanto em MY(Order Date) = January quanto em MY(Order Date) = February.
  • A instrução IF é colocada entre MIN() para evitar um problema que fazia com que expressões de nível de detalhe retornassem valores duplicados dentro de uma instrução IF.

Observações sobre a opção 3 (scaffolding de data):
  • Também é possível listar todas as datas em um nível de data superior, como o primeiro dia de cada mês. Em seguida, nas etapas 4-2 e 4-5, usar um cálculo de união de colunas que definirá a data na tabela original como o nível de data correto, como DATETRUNC('month', [Order Date])
  • Se não for possível adicionar uma tabela à fonte de dados original com todas as datas, crie uma união entre bancos de dados a uma tabela externa que contenha todas as datas. Para isso, é necessário atualizar para o Tableau Desktop 10.5 ou posterior para usar as desigualdades nas cláusulas de união no recurso de uniões entre bancos de dados.
  • Essa opção duplicará os dados, o que pode afetar outras exibições usando a mesma fonte de dados
  • A partir do Tableau Prep 2021.3.1, é possível criar um scaffolding de data no Tableau Prep sem criar uma Lista de datas. Consulte Preencher lacunas em dados sequenciais para obter instruções
Observações sobre a opção 4 (combinação de dados):
  • A combinação de dados tem várias limitações. Para obter ajuda com possíveis problemas, consulte Solucionar problemas de combinação de dados
  • As datas a serem vinculadas devem ter correspondência exata ao nível de data mais granular selecionado na caixa de diálogo Relacionamentos.
  • Ao criar relacionamentos entre campos de fontes de dados diferentes, cada campo pode ser associado somente com um outro campo por vez. Por isso, foi necessário duplicar a fonte de dados original.
  • Quaisquer campos associados com [Order Date (Data do pedido)] devem ser extraídos da cópia da fonte de dados original vinculada em MY(Date) = MY(Order Date), e vice versa para os campos associados com [Ship Date (Data de envio)]

Mostrar registros ativos ao longo do tempo
Combinar os dados
Criar expressões de nível de detalhe no Tableau
As expressões CASE e IF que contêm expressões de nível de detalhe retornam resultados inesperados
Este artigo resolveu o problema?