Após criar uma tabela de dados, utilize instruções FML no Script Mode para configurar seus campos e partições.
Introdução
A FML (fast modeling language) é uma linguagem semelhante ao SQL que auxilia na construção rápida de tabelas de dados para modelagem dimensional. Sua sintaxe baseia-se no SQL padrão. No DataWorks, a modelagem de dados desacopla o projeto da tabela lógica de sua implementação física. Isso permite projetar o modelo sem considerar as especificidades do mecanismo de big data subjacente. O mecanismo de modelagem utiliza o esquema definido em FML para orientar as operações no engine. Para materializar uma tabela lógica em uma tabela física, o mecanismo converte o FML para o dialeto SQL específico do engine de destino e, em seguida, executa as instruções.
Pré-requisitos
Atualmente, o DataWorks não oferece suporte à criação de tabelas de dados via FML. É necessário primeiro criar uma tabela lógica na interface visual. Para mais informações, consulte os seguintes tópicos:
Limitações
O DataWorks não suporta a criação de tabelas de dados ou a modificação de nomes de tabelas por meio de instruções FML. Apenas a edição de tabelas existentes é permitida, como a alteração de campos, configuração de associações ou definição de partições.
Instruções FML podem ser usadas para materializar tabelas de dados apenas nos engines MaxCompute, Hologres ou Hive.
A FML utiliza palavras-chave SQL como termos reservados. Caso o nome da tabela ou de uma coluna seja uma palavra reservada, envolva-o em crases (
) para escapá-lo. Caso contrário, ocorrerá um erro durante a criação da tabela.
Acessar o editor FML
Na página Dimensional Modeling, clique duas vezes no nome da tabela desejada na árvore de diretórios.
-
Na página Table Details, clique em Script Mode.
No editor FML da aba Script Mode, é possível visualizar a instrução FML usada para criar a tabela atual. Também é permitido configurar ou modificar os campos da tabela. Para mais detalhes, consulte Configurar uma tabela de dados de destino.
-- After a model is published to a physical table, the table name cannot be modified. This applies during pre-approval, publishing, and post-publishing stages. CREATE DIM TABLE dim_ec_pub_staff_df ALIAS 'Geographic administrative region dimension table' ( id ALIAS 'Administrative region ID' STRING COMMENT 'Administrative region ID', name ALIAS 'Administrative region name' STRING COMMENT 'Administrative region name', `level` ALIAS 'Administrative region level. 1: Country; 2: Province/Autonomous Region/Municipality; 3: City; 4: District/County' INT COMMENT 'Administrative region level. 1: Country; 2: Province/Autonomous Region/Municipality; 3: City; 4: District/County', country_id ALIAS 'Country ID' STRING COMMENT 'Country ID', country_name ALIAS 'Country name' STRING COMMENT 'Country name', province_id ALIAS 'Province/Autonomous Region/Municipality ID' STRING COMMENT 'Province/Autonomous Region/Municipality ID', province_name ALIAS 'Province/Autonomous Region/Municipality name' STRING COMMENT 'Province/Autonomous Region/Municipality name', city_id ALIAS 'City ID' STRING COMMENT 'City ID', city_name ALIAS 'City name' STRING COMMENT 'City name', district_id ALIAS 'District/County ID' STRING COMMENT 'District/County ID', district_name ALIAS 'District/County name' STRING COMMENT 'District/County name', ds ALIAS 'Business date, yyyymmdd' STRING COMMENT 'Business date, yyyymmdd' ) COMMENT 'Geographic administrative region dimension table' WITH('life cycle'='1000');
Configurar uma tabela de dados de destino
Para facilitar o entendimento, todas as instruções de configuração de tabelas são apresentadas no formato de uma declaração CREATE TABLE. No entanto, o recurso de modelagem de dados do DataWorks não suporta a criação de tabelas usando instruções FML. Na prática, basta referenciar as instruções que definem o conteúdo da tabela, como restrições e partições. O formato de uma instrução FML para configurar uma tabela de destino é o seguinte:
--Create a new table
CREATE <table_type> TABLE
IF NOT EXISTS
--Table name
<table_name> [ALIAS <alias>]
--Define column attributes
<col_name> [ALIAS <alias>] <datatype> [<category>] [COMMENT <comment>] [WITH (<key>=<value>,....)]
--Define constraints
PRIMARY KEY (<col_name>),
--Dimension constraint
CONSTRAINT <constraint_name> DIM KEY (<col_name>) REFERENCES <ref_table_name> (<ref_table_col_name>),
--Hierarchy constraint
CONSTRAINT <constraint_name> LEVEL <col_name:(<col_name>)>, --Grouping constraint
CONSTRAINT <constraint_name> COLUMN_GROUP(<col_name>,...),
--Define a comment
COMMENT 'comment'
--Define partitions
PARTITION BY (col DATATYPE COMMENT 'comment' WITH ('key'='value',...), ...)
--Define properties
WITH ('key'='value', 'key1'='value1', ...)
;
tableType
: dimDetailType? DIM
| factDetailType? FACT
| CODE
| DWS
;
dimDetailType
: NORMAL
| LEVEL
| ENUM
;
factDetailType
: TRANSACTION
| AGGREGATE
| PERIODIC_SNAPSHOT
| ACCUMULATING_SNAPSHOT
| CONSOLIDATED
;
comment
: COMMENT 'comment'
;
|
Parâmetro |
Descrição |
|
tableName |
Nome da tabela de dados. Deve conter apenas letras, dígitos e sublinhados (_), com limite máximo de 128 caracteres. |
|
if not exists |
Se já existir uma tabela com o mesmo nome no engine de destino, a instrução |
|
alias |
Alias opcional para uma tabela de dados ou coluna, geralmente utilizado como nome de exibição. |
|
tableType |
Tipo da tabela a ser criada. Instruções FML permitem criar os seguintes tipos:
|
|
comment |
Comentário da tabela. Recomenda-se um comprimento máximo de 1.024 caracteres. |
|
columnDefinition |
Definição de uma coluna da tabela. Pode incluir os seguintes parâmetros:
Nota
Como a FML permite projetar tabelas antes de materializá-las, é possível criar uma tabela sem definir nenhuma coluna. |
|
constraint |
Define restrições na estrutura da tabela. Valores válidos:
|
|
Partitioned BY |
Cria partições na tabela. |
|
WITH |
Ao criar uma tabela, especifique informações personalizadas no formato |