Apache Hive regexp extract UDF

estou a encontrar um pedaço de código na colmeia Apache como o regexp_extract(entrada, '[0-9]*', 0), alguém me pode explicar o que este código faz? Obrigado.

Author: Charles Menguy, 2013-01-17

2 answers

A partir de o manual da colmeia DDL , devolve o texto extraído usando o padrão. o por ex. regexp_extract('foothebar', 'foo(.*?)(bar)', 2) devolve bar.

O parâmetro index é o grupo de captura, que é um inteiro que pode tomar os seguintes valores:

  • 0: todo o jogo, no meu exemplo seria foothebar
  • 1: o primeiro grupo, no meu exemplo seria the
  • 2: o segundo grupo, no meu exemplo seria bar
  • n: n-ésimo grupo. Se n for maior que o número real de grupos definidos no seu regexp, a sua consulta da colmeia irá falhar.

No seu exemplo, regexp_extract(input, '[0-9]*', 0), está à procura de toda a correspondência para a sua coluna Identificada por input e começando com um valor numérico.

Aqui estão alguns exemplos:
  • regexp_extract('9eleven', '[0-9]*', 0) - > devolve 9
  • regexp_extract('9eleven', '[0-9]*', 1) -> query fails
  • regexp_extract('911test', '[0-9]*', 0) - > devolve 911
  • regexp_extract('911test', '[0-9]*', 1) -> query fails
  • regexp_extract('eleven', '[0-9]*', 0) - > devolve um texto vazio
  • regexp_extract('test911', '[0-9]*', 0) - > devolve Texto vazio
 18
Author: Charles Menguy, 2013-01-17 15:59:37

A resposta acima está parcialmente incorrecta. Vai certamente devolver o 112. Nunca especificamos o início do texto antes [0-9]*

 2
Author: yupyupyupyup, 2018-04-19 07:16:54