Buscar K
Aparência
Aparência
O arquivo tables/<slug>--<id>.yaml controla uma tabela do HorusDW: o modelo de chave e os rótulos, máscaras e descrições das colunas. Os tipos de tabela estão em tipos de tabela.
O esquema (nomes e tipos de coluna) pertence ao Dataflow que alimenta a tabela. Por isso a tabela nasce de um nó do Dataflow:
lumo new table --from-flow flow:5101 --node ext_pedidos --name "fato_vendas"fileName^[a-z0-9-]+--\d+\.yaml$headerheader.idheader.kindtable (fixo)header.lumov2 (fixo)header.tenantIdheader.appIdheader.dashboardIdbodybody.criado_em^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z$body.criado_porbody.publicado_em^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z$body.publicado_porbody.nomebody._statedraft, published, inconsistentbody.deskIdbody.originFlowIdbody.versionbody.iconbody.descriptionbody.table_typetable, file, cloudbody.key_typeduplicate, uniquelumo push refuses such a change on a table that already has data unless you pass --force-recreate.body.key_columnsbody.partition_columnbody.columnsbody.columns.<chave>.labelbody.columns.<chave>.maskbody.columns.<chave>.human_descriptionbody.columns.<chave>.descriptionbody.columns.<chave>.defaultBehaviorbody.columns.<chave>.semantic_rolebody.columns.<chave>.rolebody.expressionsbody.expressions[].idbody.expressions[].labelbody.expressions[].data_typeNumber, String, Date, Boolean, DateTime, Time, Jsonbody.expressions[].expressionbody.expressions[].human_descriptionbody.expressions[].descriptionbody.expressions[].maskbody.expressions[].semantic_rolebody.expressions[].role# tables/fato-vendas--6230.yaml
# yaml-language-server: $schema=https://docs.horusbi.com.br/schemas/v2/table.schema.json
id: 6230
kind: table
lumo: v2
tenantId: 1200
---
nome: fato_vendas
table_type: table
description: Pedidos de venda, um por linha, pela data de emissão.
# unique: linha com a mesma chave é substituída. Mudar a chave recria a tabela.
key_type: unique
key_columns: [PEDIDO_ID]
partition_column: null
# A chave de cada coluna é "NOME (Tipo)" e vem do Dataflow. Só os valores mudam.
columns:
PEDIDO_ID (Number):
label: Pedido
mask: N0
role: identificador
CLIENTE_ID (Number):
label: Cliente
mask: N0
DATA_EMISSAO (Date):
label: Data de emissão
role: data
VALOR_TOTAL (Number):
label: Valor total
mask: MOEDA
description: Valor do pedido já com desconto, sem frete.
role: dinheirokey_type, key_columns e partition_column são estruturais: mudar qualquer um apaga e recria a tabela física, e as linhas se perdem. O push recusa a mudança numa tabela com dados, a menos que você passe --force-recreate. Depois, rode o Dataflow de novo.key_type: duplicate acumula linhas a cada carga. Numa carga que recarrega uma janela sem apagá-la antes, as linhas se repetem; unique substitui pela chave.columns ("VALOR_TOTAL (Number)") é só identificação. Acrescentar uma chave não cria coluna. Para mudar nome ou tipo, edite o nó do Dataflow, rode o nó e dê lumo fetch table:<id>.table_type: cloud (Datalake) não aceita key_type, key_columns nem partition_column.expressions não levam column_name, column_type nem display_order: o servidor deriva a identidade do label.description e role de uma coluna são lidos pela IA. Papel escrito no YAML conta como escolha humana e a sugestão automática não o troca. Os nomes antigos human_description e semantic_role ainda são aceitos.mask: N0 a N4 (casas decimais), MOEDA e MOEDA0 (real), MOEDA$ e MOEDA$0 (dólar), MOEDALB e MOEDALB0 (libra), PCT0 a PCT4, SEGUNDOS, MINUTOS, FILE_SIZE e NONE.push só em rótulo, máscara, defaultBehavior, descrição e papel das colunas, e na edição de expressões que já existem. Para criar ou remover expressão, clone o Dataflow que alimenta a tabela e publique de novo.