O DSPL Gen é um utilitário de linha de comando que ajuda a converter um uma tabela de dados CSV em um conjunto de dados DSPL simples. A ferramenta analisa a entrada , cria todas as tabelas de dados necessárias e apresenta um arquivo XML DSPL. O resultado é um conjunto de dados quase completo "modelo" que requer apenas um pequeno refinamento antes do envio e visualizar.
A suposição fundamental por trás da geração de DSPL é que cada coluna da arquivo CSV de entrada corresponde a um único conceito DSPL, e cada linha é um observação única para uma combinação de dimensões. A ferramenta funciona iterando as colunas, estabelecendo os metadados apropriados para cada coluna / conceito (por exemplo, ID, tipo, se é uma dimensão ou métrica, etc.) e gerar toda a definição de conceito necessária e dividir tabelas.
Geração de DSPL em execução
Sintaxe
Observação:essas instruções pressupõem que você já seguiu Instruções de instalação da página "Ferramentas de DSPL".
Para executar o DSPL Gen, acesse o terminal / prompt no seu sistema e digite:
python dsplgen.py -o [output path] [path to CSV file]
em que os termos entre colchetes são substituídos da seguinte forma:
[output path]
: caminho para o diretório em que você quer que os arquivos de saída sejam colocados; este diretório já deve existir no seu sistema de arquivos.[path to CSV file]
: caminho para o arquivo CSV de entrada. Consulte a seção abaixo para mais detalhes sobre como formatar esse arquivo.
O componente -o [output path]
é opcional. se omitido, o
os arquivos de saída serão colocados no diretório atual.
A ferramenta então executa, iterando seu arquivo CSV, extraindo o conceito definições e gerar tabelas de fração. A menos que sejam encontrados erros, um arquivo e um ou mais arquivos CSV são gravados no diretório de saída.
Por fim, abra o arquivo XML no editor de texto de sua preferência e verifique se
as alterações desejadas. No mínimo, você deve preencher os nomes,
descrições e outros valores que foram marcados pela ferramenta com o
Notação ** INSERT ... **
.
Exemplo simples
Suponha que temos um CSV que fornece o número total de casos para um doenças, divididas por mês, país e faixa etária. Para simplificar, vamos supor que existam dois valores de cada dimensão:
date,country,age_group,disease_cases 01/2000,US,old,102030 01/2000,MX,old,192939 01/2000,US,young,23131 01/2000,MX,young,12311 02/2000,US,old,143135 02/2000,MX,old,203131 02/2000,US,young,22990 02/2000,MX,young,12591
Executar a ferramenta na entrada acima produz quatro arquivos:
dataset.xml
: o modelo XML DSPLcountry_table.csv
: valores decountry
conceitoage_group_table.csv
: os valores do parâmetro Conceito deage_group
slice_0_table.csv
: tabela da fração do conjunto de dados (idêntica a tabela de entrada, exceto para classificação)
Neste caso específico, a ferramenta é capaz de adivinhar corretamente todos os tipos e formatos de coluna. Agora só falta acessar o arquivo XML e editar os diversos nomes, descrições e URLs nos metadados do conjunto de dados.
Como anotar o CSV de entrada
Opções básicas
Em muitos casos, como no exemplo acima, o DSPL Gen pode adivinhar a metadados de cada coluna, por exemplo, o tipo, o formato e se é um dimensão ou métrica. Em outros casos, porém, a ferramenta pode não conseguir podem adivinhar, ou podem adivinhar, mas ainda assim, no entanto, não seguir o comportamento desejado.
Para lidar com esses casos, a ferramenta oferece suporte à adição de geração de DSPL opções / "dicas" na linha do cabeçalho CSV. A sintaxe deles é da seguinte forma:
column1[option1=value1;option2=value2;...],column2[option1=value1;option2=value2;...],column3[...],...
Observe que a lista de opções é colocada dentro colchetes à direita do nome da coluna e a opção sucessiva são separadas por ponto e vírgula. Cada opção consiste em uma nome da opção, um sinal de igual e um valor de opção.
Atualmente, a geração de DSPL oferece suporte às seguintes opções básicas:
Opção | Descrição | Padrão |
---|---|---|
type |
O tipo de dados DSPL para esta coluna; precisa ser date ;
float , integer ou string . |
Adivinhado com base em dados |
format |
O formato desta coluna de data. como em DSPL, este formato deve ser codificados usando o Padrão Joda DateTime. | Adivinhado com base em dados |
slice_role |
Qual é o papel dessa coluna em qualquer fração precisa ser
dimension ou metric . |
dimension se a coluna for do tipo date ou
string . Caso contrário, metric |
concept |
O conceito canônico que esta coluna representa, por exemplo,
geo:country se fornecido, o conceito é importado e nenhum
é produzida no arquivo XML. |
Nenhum |
extends |
O conceito canônico que essa coluna estende, por exemplo,
entity:entity : |
Nenhum |
parent |
O conceito pai desta coluna. O pai precisa ser uma dimensão conceito definido dentro do conjunto de dados (ou seja, não importado); se fornecido, Essas informações serão usadas para definir uma hierarquia de conceitos na no conjunto de dados. Cada instância filha só pode ter um pai. Se várias valores pai são detectados, então a ferramenta produzirá um erro. |
Nenhum |
Consolidações de valor
Além da opção básica, "hint" descritas acima,
A geração de DSPL também oferece suporte a agrupamentos de frações: considerando uma única tabela
entrada, a ferramenta pode criar automaticamente tabelas adicionais com limitação
subconjuntos das dimensões. Por exemplo, se a tabela de entrada corresponde
uma fração com três dimensões não temporais (por exemplo, dimension1
,
dimension2
e dimensions3
), a ferramenta pode
crie algumas frações adicionais também: apenas dimension1
,
apenas dimension2
, apenas dimension1
,
dimension2
etc.
A adição dessas fatias extras pode facilitar a análise do seu conjunto de dados já que reduz o número de filtros de dimensão necessários para produzir e visualizações de dados. Por outro lado, esse processo pode introduzir "novos" dados não encontrados no arquivo original, portanto, ele também pode introduzir erros se não usadas corretamente, verifique cuidadosamente os números agregados antes de publicar no conjunto de dados.
O processo de agrupamento é acionado pela inclusão de algumas opções extras na no cabeçalho CSV de entrada:
Opção | Descrição | Padrão |
---|---|---|
aggregation |
O método de agregação a ser usado na combinação de vários valores.
desta coluna. precisa ser AVG , COUNT
MAX , MIN ou SUM ; somente
significativo para métricas. |
SUM |
rollup |
Se o valor for true , o conceito de
esta coluna é "agregada" (ou seja, agregados);
significativo somente para conceitos de dimension. |
Falso |
total_val |
O valor nesta coluna indica as linhas a serem mantidas quando esta é agrupada. significativo somente para conceitos de dimension. | None |
A geração DSPL calcula as visualizações completas usando o seguinte algoritmo:
- Usando os valores das tags
rollup
, calcule todos os valores possíveis combinações de colunas - Para cada combinação:
- Se alguma coluna completa tiver um parâmetro
total_val
e filtre as linhas por esse valor. caso contrário, selecione todas as linhas - Remover as colunas agrupadas
- Agrupar as linhas pelos valores das colunas de dimensão restantes.
- Agregue cada métrica usando o método especificado nas
Parâmetro
aggregation
- Criar uma fração e uma tabela associada para o resultado
- Se alguma coluna completa tiver um parâmetro
Se houver apenas um valor em cada agrupamento e o
função de agregação for definida como SUM
(o valor padrão), então o
os valores das métricas nas tabelas de origem e geradas serão os mesmos, ou seja, nenhum valor novo
são gerados. Assim, usar o parâmetro total_val
e garantir
que há apenas um "total" linha para cada combinação das outras
permite armazenar agregados pré-computados diretamente na origem.
Aviso: o número de frações geradas é de é igual a 2colunas acumuladas. A aplicação dessa opção a um modelo muitas colunas pode resultar em tempos de execução muito longos e/ou grandes conjuntos de dados.
Exemplo avançado
Suponha que temos os mesmos dados de entrada do exemplo anterior, mas incluindo agora dados agregados entre países:
date,country,age_group,disease_cases 01/2000,US,old,102030 01/2000,MX,old,192939 01/2000,total,old,152012 01/2000,US,young,23131 01/2000,MX,young,12311 01/2000,total,young,241011 02/2000,US,old,143135 02/2000,MX,old,203131 02/2000,total,old,211310 02/2000,US,young,22990 02/2000,MX,young,12591 02/2000,total,young,240131
O total de cada faixa etária pode não corresponder à soma dos valores dos países porque, por exemplo, diferenças na metodologia ou na existência de outros países que não estão enumerados na lista.
Agora queremos criar um conjunto de dados DSPL que tenha as seguintes recursos:
- "Abrir" os países para obter o número total de doenças casos somente por faixa etária
- Usar o
geo:country
canônico para a colunacountry
, para que possamos automaticamente obter os nomes completos, locais etc. para - Faça o conceito
disease_cases
estenderquantity:amount
, para que possamos adicionar (manualmente) informações de unidade ao arquivo XML.
Para isso, modificamos a linha do cabeçalho do CSV de entrada da seguinte forma:
date,country[concept=geo:country;rollup=true;total_val=total],age_group,disease_cases[extends=quantity:amount]
Ao executar a ferramenta novamente, temos uma tabela de fatias adicional, que elimina a distinção por país:
date,age_group,disease_cases 01/2000,old,152012 02/2000,old,211310 01/2000,young,241011 02/2000,young,240131
Observe que, se não tivéssemos incluído os valores totais e os
total_val
na tabela de origem, teríamos recebido a
soma calculada para cada faixa etária.
Além disso, a definição de disease_cases
no arquivo XML
agora inclui a extensão de quantity:amount
, conforme desejado. A
definição de country
é descartada do arquivo XML porque
estamos usando um conceito importado para isso.
Depois de preencher os diversos nomes, descrições e informações da unidade, pode compactar o pacote do conjunto de dados e enviá-lo ao Explorador de Dados Públicos para com a visualização de dados.