Skip to content

O antlr4-alteryx-functions, utiliza o ANTLR4 para processar expressões condicionais e funções de conversão do Alteryx Designer e transpilar essas expressões para código Python. Ele fornece uma solução automática e extensível para migrar lógicas de negócio do Alteryx para Python.

License

Notifications You must be signed in to change notification settings

dmux/antlr4-alteryx-functions

Repository files navigation

antlr4-alteryx-functions

Binder

Este projeto, antlr4-alteryx-functions, utiliza o ANTLR4 para processar expressões condicionais e funções de conversão do Alteryx Designer e transpilar essas expressões para código Python. Ele fornece uma solução automática e extensível para migrar lógicas de negócio do Alteryx para Python.

Funcionalidades

  • Reconhecimento de Expressões Condicionais:

    • IF ... THEN ... ELSE ... ENDIF
    • IIF(condition, true_result, false_result)
    • SWITCH(expression, case1, result1, ..., default_result)
  • Suporte a Funções de Conversão:

    • TOBOOLEAN(expression)
    • TODATE(expression)
    • TONUMBER(expression)
    • TOSTRING(expression)
  • Transpilação Automática: As expressões do Alteryx são convertidas para código Python equivalente.

Estrutura do Projeto

  • Gramatica ANTLR: Definição da sintaxe para reconhecer expressões do Alteryx em um arquivo .g4.
  • Parser e Lexer: Gerados pelo ANTLR com base na gramática.
  • Transpiler: Um visitante em Python que converte as expressões para Python.
  • Exemplos: Testes e exemplos práticos de uso do sistema.

Requisitos

  • Python: Versão 3.12 ou superior.
  • ANTLR4: Ferramenta para gerar o parser e o lexer.

Dependências

As dependências necessárias estão listadas no arquivo pyproject.toml.

Status de Conversão

Abaixo estão listadas as funções condicionais e de conversão do Alteryx que estão sendo convertidas para Python.

Legenda do Status de Conversão:

  • Pronto: Converte com sucesso e está documentado.
  • Em Progresso: Está sendo implementado.

Funções Condicionais - Alteryx

Função Descrição Referência Status
Case Avalia uma série de condições e retorna o valor correspondente ao primeiro caso verdadeiro. Case Pronto
IIF Retorna um valor se a condição for verdadeira e outro valor se for falsa (função "se"). IIF Pronto
IF THEN ELSE Avalia uma condição e executa diferentes ações com base no resultado verdadeiro ou falso. IF THEN ELSE Pronto
IF Avalia uma condição e retorna um valor com base no resultado verdadeiro ou falso. IF Pronto
Switch Avalia uma expressão contra vários casos e retorna o valor correspondente ao caso encontrado. Switch Pronto

Funções de Conversão - Alteryx

Função Descrição Referência Status
BinToInt Converte um número binário para inteiro. BinToInt Em Progresso
Bool Converte um valor em um tipo booleano. Bool Pronto
Byte Converte um valor em um tipo byte. Byte Em Progresso
CharToInt Converte um caractere para o valor inteiro correspondente. CharToInt Pronto
Date Converte um valor em um tipo de data. Date Em Progresso
DateTime Converte um valor em um tipo de data e hora. DateTime Em Progresso
FixedDecimal Converte um número em um tipo decimal fixo com a precisão especificada. FixedDecimal Em Progresso
Float Converte um valor em um número de ponto flutuante. Float Em Progresso
Int16 Converte um valor para um inteiro de 16 bits. Int16 Em Progresso
Int32 Converte um valor para um inteiro de 32 bits. Int32 Em Progresso
Int64 Converte um valor para um inteiro de 64 bits. Int64 Em Progresso
String Converte um valor em uma string. String Pronto
ToLowerCase Converte uma string para letras minúsculas. ToLowerCase Em Progresso
ToUpperCase Converte uma string para letras maiúsculas. ToUpperCase Em Progresso
WString Converte um valor em uma string Unicode. WString Em Progresso

Instalação

  1. Clone o repositório:

    git clone https://github.com/seu-usuario/antlr4-alteryx-functions.git
    cd antlr4-alteryx-functions
  2. Instale as dependências:

    pip install -r requirements.txt
  3. Instale o ANTLR4 (caso não tenha):

    brew install antlr # Para macOS
    sudo apt install antlr4 # Para Linux (distribuições suportadas)
  4. Gere os arquivos do parser e lexer:

    antlr4 -Dlanguage=Python3 AlteryxConditional.g4

Uso

  1. Escreva uma expressão em Alteryx:

    IF "age" > 30 THEN "old" ELSE "young" ENDIF
    
  2. Rode o transpiler para converter para Python:

    from transpiler import transpile_alteryx_to_python
    
    alteryx_expression = 'IF "age" > 30 THEN "old" ELSE "young" ENDIF'
    python_code = transpile_alteryx_to_python(alteryx_expression)
    print(python_code)  # Resultado: ("old" if "age" > 30 else "young")

Testes

Execute testes automatizados para validar as funcionalidades:

pytest

Exemplos Suportados

Entrada 1

TONUMBER("42")

Saída 1

float("42")

Entrada 2

IF TOBOOLEAN("1") THEN TOSTRING(100) ELSE "False" ENDIF

Saída 2

("str(100)" if bool("1") else "False")

Licença

Este projeto está licenciado sob a licença MIT. Consulte o arquivo LICENSE para mais detalhes.

About

O antlr4-alteryx-functions, utiliza o ANTLR4 para processar expressões condicionais e funções de conversão do Alteryx Designer e transpilar essas expressões para código Python. Ele fornece uma solução automática e extensível para migrar lógicas de negócio do Alteryx para Python.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published