Descrição
Template permite que o usuário especifique sua própria string de formato personalizada com marcadores para valores,
além de definir regras de escape para os dados.
Ele usa as seguintes configurações:
Configurações e regras de escape
format_template_row
format_template_row especifica o caminho para o arquivo que contém strings de formato das linhas com a seguinte sintaxe:
As seguintes regras de escape são suportadas:
Se uma regra de escape for omitida,
None será usada. XML é adequado apenas para saída.SELECT) ou esperados (ao usar INPUT),
entre os delimitadores das colunas Search phrase:, , count:, , ad price: $ e ;, respectivamente:
s(com a regra de escapeQuoted)c(com a regra de escapeEscaped)p(com a regra de escapeJSON)
- Ao fazer
INSERT, a linha abaixo corresponde ao template esperado e leria os valoresbathroom interior design,2166,$3nas colunasSearch phrase,count,ad price. - Ao fazer
SELECT, a linha abaixo é a saída, supondo que os valoresbathroom interior design,2166,$3já estejam armazenados em uma tabela nas colunasSearch phrase,count,ad price.
format_template_rows_between_delimiter
format_template_rows_between_delimiter especifica o delimitador entre as linhas, que é impresso (ou esperado) após cada linha, exceto a última (\n por padrão)
format_template_resultset
format_template_resultset especifica o caminho para o arquivo que contém uma string de formato para o conjunto de resultados.
A string de formato para o conjunto de resultados tem a mesma sintaxe de uma string de formato para linhas.
Ela permite especificar um prefixo, um sufixo e uma forma de imprimir algumas informações adicionais, e contém os seguintes placeholders em vez de nomes de colunas:
datasão as linhas com dados no formatoformat_template_row, separadas porformat_template_rows_between_delimiter. Esse placeholder deve ser o primeiro placeholder na string de formato.totalsé a linha com os valores totais no formatoformat_template_row(ao usar WITH TOTALS).miné a linha com os valores mínimos no formatoformat_template_row(quandoextremesestá definido como 1).maxé a linha com os valores máximos no formatoformat_template_row(quandoextremesestá definido como 1).rowsé o número total de linhas de saída.rows_before_limité o número mínimo de linhas que teria havido sem LIMIT. É gerado apenas se a consulta contiver LIMIT. Se a consulta contiver GROUP BY,rows_before_limit_at_leastserá o número exato de linhas que teria havido sem LIMIT.timeé o tempo de execução da requisição em segundos.rows_readé o número de linhas lidas.bytes_readé o número de bytes (não compactados) lidos.
data, totals, min e max não devem ter uma regra de escape especificada (ou None deve ser especificado explicitamente). Os placeholders restantes podem ter qualquer regra de escape especificada.
Se a configuração
format_template_resultset for uma string vazia, ${data} será usado como valor padrão.especificação inline
format_template_row, format_template_resultset) do formato Template em um diretório em todos os nós de um cluster.
Além disso, o formato pode ser tão simples que não precisa ser colocado em um arquivo.
Nesses casos, format_template_row_format (para format_template_row) e format_template_resultset_format (para format_template_resultset) podem ser usados para definir a string de template diretamente na consulta,
em vez de usar um caminho para o arquivo que a contém.
As regras para strings de formato e sequências de escape são as mesmas de:
format_template_rowao usarformat_template_row_format.format_template_resultsetao usarformat_template_resultset_format.
Exemplo de uso
Template: primeiro para selecionar dados e depois para inserir dados.
Selecionar dados
Query
/some/path/resultset.format
/some/path/row.format
Response
Inserção de dados
/some/path/resultset.format
/some/path/row.format
PageViews, UserID, Duration e Sign dentro dos placeholders são nomes de colunas da tabela. Os valores após Useless field nas linhas e após \nTotal rows: no sufixo serão ignorados.
Todos os delimitadores nos dados de entrada devem ser estritamente iguais aos delimitadores das strings de formato especificadas.
Especificação inline
Template e as configurações de especificação inline para realizar uma tarefa simples: selecionar com SELECT os nomes de alguns formatos do ClickHouse na tabela system.formats e formatá-los como uma tabela markdown. Isso pode ser feito facilmente usando o formato Template e as configurações format_template_row_format e format_template_resultset_format.
Nos exemplos anteriores, especificamos as strings de formato do conjunto de resultados e das linhas em arquivos separados, com os caminhos para esses arquivos definidos usando as configurações format_template_resultset e format_template_row, respectivamente. Aqui, vamos fazer isso inline porque nosso template é trivial, consistindo apenas em alguns | e - para montar a tabela markdown. Vamos especificar nossa string de template do conjunto de resultados usando a configuração format_template_resultset_format. Para criar o cabeçalho da tabela, adicionamos |ClickHouse Formats|\n|---|\n antes de ${data}. Usamos a configuração format_template_row_format para especificar a string de template |`{0:XML}`| para nossas linhas. O formato Template inserirá nossas linhas no placeholder ${data} com o formato especificado. Neste exemplo, temos apenas uma coluna, mas, se você quisesse adicionar mais, poderia fazer isso acrescentando {1:XML}, {2:XML}… etc. à string de template da linha, escolhendo a regra de escape mais adequada. Neste exemplo, optamos pela regra de escape XML.
Query
| e - para montar essa tabela em markdown:
Response