Tutorial: incluindo expressões

Neste tutorial, você está gravando uma expressão para calcular a distância percorrida por robôs com base na velocidade e no tempo de viagem. Teste a expressão antes de aplicá-la a um tipo de dispositivo em.

Sobre esta tarefa

Nota: Para completar este tutorial, você usa um modelo de tipo de dispositivo de amostra e dados. Os tipos de dispositivos de amostra não utilizam a versão mais recente de tipos de dispositivo e não suportam métricas de dados de streaming. Para obter mais informações, consulte Criando métricas de dados em lote e de fluxo

Você está testando a expressão off-line para certificar-se de que o cálculo funciona e de que a sintaxe está correta.

No script de teste, você cria um tipo de dispositivo de amostra, gerando alguns dados de amostra e aplica a expressão aos dados de amostra para criar uma nova métrica distance .

Antes de iniciar

Instale o Python 3.9.x em seu ambiente.

Etapa 1: definir sua expressão

Calcule a distância percorrida por robôs. Dois dos itens de dados de entrada do tipo de dispositivo de amostra de robô são speed e travel_time.

Defina a distância como:

distance = speed * travel time
		

Etapa 2: gravar sua expressão em Python

Por exemplo:

df['distance'] = df['speed']*df['travel_time']

Etapa 3: testar sua expressão

Crie um script chamado test_my_expression.py. No script, conclua estas etapas:

  1. Importar as bibliotecas e os pacotes do Python. Por exemplo:
    import datetime as dt
    import numpy as np
    import pandas as pd
    from collections import namedtuple
  2. Defina um namedtuple para capturar os metadados para a expressão.
    PythonExpression = namedtuple('Exp', 'output expression')
  3. Crie três robôs de amostra, robot_a, robot_b e robot_c. Exiba os dados.
    row_count = 5
    data_items = ["speed","travel_time"]
    entities = ['robot_a','robotb','robot_c']
    dfs = []
    for e in entities:
        data = np.random.normal(100,10,(row_count,len(data_items)))
        df = pd.DataFrame(data=data,columns = data_items)
        df['id'] = e
        df['evt_timestamp'] = pd.date_range(
              end=dt.datetime.utcnow(),
              periods=row_count
              )
      df = df.set_index(['id','evt_timestamp'])
      dfs.append(df)
    
    df = pd.concat(dfs)
    print(df)
  4. Inclua a expressão.
    df["distance"] = df["speed"] * df["travel_time"]
    print(df)
  5. Modele a função PythonExpression e seus metadados no script. Como você está executando o script off-line, deve-se modelar o comportamento da função. Use uma tupla Python com um novo item de dados e uma expressão de sequência.
    ex1 = PythonExpression('distance','df["speed"]*df["travel_time"]')
  6. Avalie a expressão.
    df[ex1.output] = eval(ex1.expression)
    print(df)
  7. Execute o script na linha de comandos. Por exemplo:
    python3 test_my_expression.py

O script cria um novo item de dados distance. Se for bem-sucedido, você estará pronto para usar a expressão em uma função na interface do usuário.

Etapa 4: Criar um tipo de dispositivo de amostra

  1. Na página Configuração , na aba Devices , clique no ícone de mais (+) para adicionar um novo tipo de dispositivo.
  2. Selecione o modelo de tipo de amostra de Robot.
  3. Designe um nome ao tipo de dispositivo.
  4. Clique em Criar.
  5. Selecione o tipo de dispositivo de amostra.
  6. Clique em Configurar tipo de dispositivo e em seguida, clique em Dados.

As métricas levam até 5 minutes minutos para gerar.

Etapa 5: aplicar a expressão ao tipo de dispositivo

  1. Na guia dados , clique em Criar métrica.
  2. Selecione a função PythonExpression no catálogo.
  3. Configure o escopo e, em seguida, clique em Avançar.
  4. Remova distance = da função de antes e, no campo de expressão, insira:
    df["speed"]*df["travel_time"]
  5. Clique em Avançar.
  6. Especificar distance como o item de dados de saída.
  7. Clique em Criar.
  8. Na lista de itens de dados, selecione distance.
  9. Visualizar os novos dados da métrica a distância. Aguarde até 5 minutos para avaliar a expressão em relação aos dados de amostra.
Observação: Um script, offline_sample_expressions.py também está disponível no repositório IoT Functions para ajudá-lo a se familiarizar com a sintaxe da expressão Python que é usada para criar expressões no.