Este tema describe la sintaxis y los parámetros de las funciones de mapeo y enriquecimiento. También incluye ejemplos sobre cómo utilizar estas funciones.
Funciones
Categoría | Función | Descripción |
Mapeo basado en campos | Mapea el valor de un campo de entrada a un valor en un diccionario de datos específico y devuelve un campo nuevo. Esta función se puede usar junto con otras funciones. Para obtener más información, consulte Use the e_dict_map function to enrich data. | |
Mapea el valor de un campo de entrada a una fila en una tabla específica y devuelve un campo nuevo. Esta función se puede usar junto con otras funciones. Para obtener más información, consulte Enrich HTTP response status codes by using the e_table_map function. | ||
Enriquece un registro sin procesar mediante una tabla de datos en Tablestore como tabla de dimensiones. | ||
Enriquece un registro sin procesar mediante una tabla de datos en ApsaraDB for Redis como tabla de dimensiones. |
e_dict_map
La función e_dict_map asigna el valor de un campo de entrada a un valor en un diccionario de datos específico y devuelve un campo nuevo.
-
Sintaxis
e_dict_map(data, field, output_field, case_insensitive=True, missing=None, mode="overwrite") -
Parámetros
Parámetro
Tipo
Obligatorio
Descripción
data
Dict
Sí
Diccionario de datos que se utiliza para la asignación. El valor de este parámetro debe tener el formato estándar
{key01:value01,key01:value02,...}. Las claves deben ser cadenas. Ejemplo:{"1": "TCP", "2": "UDP", "3": "HTTP", "*": "Unknown"}.field
String o lista de cadenas
Sí
Uno o más nombres de campos. Si el valor de este parámetro contiene varios nombres de campos, el sistema ejecuta las siguientes operaciones:
El sistema asigna los nombres de campos de forma secuencial.
Si el sistema encuentra varias coincidencias para los campos y el parámetro mode está configurado como overwrite, devuelve el último valor coincidente.
Si no hay coincidencias para los campos, el sistema devuelve el valor del parámetro missing.
output_field
String
Sí
Nombre del campo que desea que devuelva la función.
case_insensitive
Boolean
No
Indica si se deshabilita la distinción entre mayúsculas y minúsculas durante la asignación.
True: deshabilita la distinción entre mayúsculas y minúsculas. Este es el valor predeterminado.
False: habilita la distinción entre mayúsculas y minúsculas.
NotaSi el diccionario de datos contiene varias claves que solo difieren en el uso de mayúsculas y minúsculas, y el parámetro case_insensitive se establece en True, el sistema primero asigna el valor del campo de entrada a una clave con el mismo formato de mayúsculas y minúsculas. Si no existe dicha clave, el sistema asigna el valor de forma aleatoria a una de las claves disponibles.
missing
String
No
Valor que se asigna al campo especificado por output_field cuando no se encuentra ninguna coincidencia para el campo de entrada. Valor predeterminado: None, lo que indica que no se realiza ninguna asignación.
NotaSi el diccionario de datos contiene una clave con un asterisco (), el parámetro
missingdeja de tener efecto. Esto ocurre porque el asterisco () tiene mayor prioridad que el parámetromissing.mode
String
No
Modo de sobrescritura de los campos. Valor predeterminado: overwrite. Para obtener más información, consulte Field extraction check and overwrite modes.
-
Respuesta
Se devuelve un registro que contiene un campo nuevo.
-
Ejemplos
-
Ejemplo 1: asigne el valor del campo pro del registro original a un valor de un diccionario de datos y genere un campo nuevo llamado protocol.
-
Registro original
data: 123 pro: 1 -
Regla de transformación
e_dict_map( {"1": "TCP", "2": "UDP", "3": "HTTP", "6": "HTTPS", "*": "Unknown"}, "pro", "protocol", ) -
Resultado
data: 123 pro: 1 protocol: TCP
-
-
Ejemplo 2: asigne el valor del campo status de los registros originales a valores de un diccionario de datos y genere un campo nuevo llamado message.
-
Registros originales
status: 500status: 400status: 200 -
Regla de transformación
e_dict_map({"400": "Error", "200": "Success", "*": "Other"}, "status", "message") -
Resultado
status: 500 message: Otherstatus: 400 message: Errorstatus: 200 message: Success
-
-
-
Referencias
Esta función se puede usar junto con otras funciones. Para obtener más información, consulte Use the e_dict_map function to enrich data.
e_table_map
La función e_table_map asigna el valor de un campo de entrada a una fila de una tabla específica y devuelve un campo nuevo.
-
Sintaxis
e_table_map(data, field, output_fields, missing=None, mode="fill-auto") -
Parámetros
Parámetro
Tipo
Obligatorio
Descripción
data
Table
Sí
Tabla que se utiliza para la asignación.
NotaSi usa las funciones de recursos
res_rds_mysqlyres_log_logstore_pullcomo orígenes de datos, debe establecer el parámetroprimary_keys. De lo contrario, el rendimiento se verá gravemente afectado y podrían producirse retrasos en la tarea. Para obtener más información sobre cómo configurar el parámetroprimary_keys, consulte Resource functions.field
String, lista de cadenas o lista de tuplas
Sí
Campo de entrada. Si un registro no contiene este campo, no se ejecuta ninguna operación sobre él.
output_fields
String, lista de cadenas o lista de tuplas
Sí
Campos de salida. Ejemplo:
["province", "pop"].missing
String
No
Valor que se asigna a los campos especificados por output_fields cuando no se encuentra coincidencia para el campo de entrada. Valor predeterminado: None, lo que indica que no se realiza ninguna asignación. Si desea asignar el campo de entrada a varias columnas, establezca el parámetro
missingcon una lista de valores predeterminados correspondientes al campo de entrada. La cantidad de valores predeterminados debe coincidir con el número de columnas.NotaSi la tabla contiene una columna con un asterisco (), el parámetro
missingdeja de tener efecto. Esto ocurre porque el asterisco () tiene mayor prioridad que el parámetromissing.mode
String
No
Modo de sobrescritura de los campos. Valor predeterminado: fill-auto. Para obtener más información, consulte Field extraction check and overwrite modes.
-
Respuesta
Se devuelve un registro que contiene los campos nuevos.
-
Ejemplos
-
Ejemplo 1: asigne el valor del campo city a una fila de una tabla y devuelva el valor del campo province de esa fila.
-
Registro original
data: 123 city: nj -
Regla de transformación
e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), "city", "province" ) -
Resultado
data: 123 city: nj province: js
-
-
Ejemplo 2: asigne el valor del campo city a una fila de una tabla y devuelva los valores de los campos province y pop de esa fila.
-
Registro original
data: 123 city: nj -
Regla de transformación
e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), "city", ["province", "pop"], ) -
Resultado
data: 123 city: nj province: js pop: 800
-
-
Ejemplo 3: utilice la función tab_parse_csv para construir una tabla, asigne el valor del campo city a una fila de dicha tabla y devuelva los valores de los campos province y pop de esa fila.
-
Registro original
data: 123 city: nj -
Regla de transformación
e_table_map( tab_parse_csv("city#pop#province\nnj#800#js\nsh#2000#sh", sep="#"), "city", ["province", "pop"], ) -
Resultado
data: 123 city: nj province: js pop: 800
-
-
Ejemplo 4: use la función tab_parse_csv para compilar una tabla, asigne el valor del campo city a una fila de la tabla y devuelva los valores de los campos province y pop correspondientes a esa fila.
-
Registro sin procesar
data: 123 city: nj -
Regla de transformación
e_table_map( tab_parse_csv( "city,pop,province\n|nj|,|800|,|js|\n|shang hai|,2000,|SHANG,HAI|", quote="|" ), "city", ["province", "pop"], ) -
Resultado
data: 123 city: nj province: js pop: 800
-
-
Ejemplo 5: el campo de entrada es distinto al campo correspondiente en la tabla que se usa para la asignación. Busque una fila en la tabla con base en los campos cty y city, y devuelva el valor del campo province de dicha fila.
-
Registro sin procesar
data: 123 cty: nj -
Regla de transformación
e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), [("cty", "city")], "province", ) -
Resultado
data: 123 cty: nj province: js
-
-
Ejemplo 6: el campo de entrada es distinto al campo correspondiente en la tabla que se usa para la asignación. Asigne los datos y cambie el nombre del campo de salida.
-
Registro sin procesar
data: 123 cty: nj -
Regla de transformación
e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), [("cty", "city")], [("province", "pro")], ) -
Resultado
data: 123 cty: nj pro: js
-
-
Ejemplo 7: asigne los valores de varios campos a una fila de una tabla.
-
Registro sin procesar
data: 123 city: nj pop: 800 -
Regla de transformación
e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), ["city", "pop"], "province", ) -
Resultado
data: 123 city: nj pop: 800 province: js
-
-
Ejemplo 8: asigne los valores de varios campos a una fila de una tabla. Los campos de entrada son distintos de los campos correspondientes en la tabla que se usa para la asignación.
-
Registro sin procesar
data: 123 cty: nj pp: 800 -
Regla de transformación
e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), [("cty", "city"), ("pp", "pop")], "province", ) -
Resultado
data: 123 cty: nj pp: 800 province: js
-
-
-
Referencias
Esta función se puede usar junto con otras funciones. Para obtener más información, consulte Enrich HTTP response status codes by using the e_table_map function.
e_tablestore_map
La función e_tablestore_map enriquece un registro sin procesar mediante una tabla de datos en Tablestore, la cual se utiliza como tabla de dimensiones.
-
Sintaxis
e_tablestore_map( fields, endpoint, ak_id, ak_secret, instance_name, table_names, output_fields=None, output_table_name=None, encoding="utf8", mode="fill-auto", ) -
Parámetros
Parámetro
Tipo
Obligatorio
Descripción
fields
String, number, list o tuple list
Sí
Campos del registro sin procesar que se usan para mapear los datos entre dicho registro y la tabla de datos. La función asigna varios campos del registro a las claves primarias de la tabla de datos, uno por uno. Ejemplos:
Si la tabla de datos contiene la clave primaria a y el registro sin procesar incluye el campo a, use
fields="a".Si la tabla de datos contiene las claves primarias a, b y c, y el registro sin procesar incluye los campos a, b y c, use
fields=["a", "b", "c"].Si la tabla de datos contiene las claves primarias a, b y c, y el registro sin procesar incluye los campos a1, b1 y c1, use
fields=[("a1", "a"), ("b1", "b"), ("c1", "c")].
endpoint
String
Sí
Endpoint de la instancia de Tablestore donde se creó la tabla de datos. Para obtener más información, consulte Endpoints.
NotaPuede usar el endpoint de la virtual private cloud (VPC) o el endpoint público de la instancia de Tablestore. El endpoint de VPC sirve para acceder dentro de la misma región, mientras que el endpoint público permite el acceso por internet sin importar la región.
ak_id
String
Sí
AccessKey ID de la cuenta con permisos para acceder a la instancia de Tablestore. Para obtener más información, consulte Create an AccessKey.
Si usa un usuario de RAM, compruebe que tenga los permisos de acceso correspondientes, como AliyunOTSReadOnlyAccess. Para obtener más información, consulte Manage RAM user permissions.
ak_secret
String
Sí
AccessKey secret de la cuenta con permisos para acceder a la instancia de Tablestore. Para obtener más información, consulte Create an AccessKey.
instance_name
String
Sí
Nombre de la instancia de Tablestore.
table_names
String, string list o tuple list
Sí
Nombre de la tabla de datos. Si la tabla utiliza un índice secundario, establezca este parámetro con el nombre del índice. Para obtener más información sobre la función de índices secundarios, consulte Create a secondary index.
Por ejemplo, si se creó el índice secundario index1 para la tabla de datos, establezca este parámetro en
"index1".output_fields
List
No
Campos de salida. Puede especificar los nombres de las columnas de clave primaria o de las columnas de atributos. Ejemplo:
["province", "pop"]. Si no configura este parámetro, se devuelven todas las columnas de la fila coincidente según los campos de entrada.NotaSi se crearon varias tablas de datos en la instancia de Tablestore, la función devuelve únicamente los datos de la primera tabla utilizada para la coincidencia.
output_table_name
String
No
Nombre de la tabla de datos donde se almacenan los datos devueltos. Valor predeterminado: None, lo que indica que los campos de salida no incluyen el nombre de la tabla. Si establece este parámetro con una cadena de texto, los campos de salida sí lo incluirán.
Por ejemplo, suponga que se usa la tabla de datos llamada test y la regla de transformación incluye
output_fields=["province", "pop"],output_table_name="table_name". Si coinciden las columnas de datos["province", "pop"]de la tabla test, los campos de salida seránprovince: xxx, pop:xxx,table_name:test.encoding
String
No
Método de codificación de los parámetros de la solicitud HTTPS. Valor predeterminado: utf-8.
mode
String
No
Modo de sobrescritura de los campos. Valor predeterminado: fill-auto. Para obtener más información, consulte Field extraction check and overwrite modes.
-
Respuesta
Se devuelve un registro que contiene los campos nuevos.
-
Ejemplos
Los ejemplos a continuación se basan en la tabla de datos table_name_test.
city (clave principal)
pop (clave principal)
cid
province
region
bj
300
1
bj
huabei
nj
800
2
js
huadong
sh
200
3
sh
huadong
-
Ejemplo 1: busque una fila en la tabla de datos con base en los campos city y pop. Devuelva los valores de las columnas province y cid correspondientes a dicha fila.
-
Registro original
city:sh name:maki pop:200 -
Regla de transformación
e_tablestore_map( ["city","pop"], "https://d00s0dxa****.cn-hangzhou.ots.aliyuncs.com", "LTA3****", "VIH9****", "d00s0dxa****", "table_name_test", output_fields=["province","cid"]) -
Resultado
city:sh name:maki pop:200 cid:3 province:sh
-
-
Ejemplo 2: asigne los campos city1 y pop1 del registro original a las claves principales city y pop de la tabla de datos. Busque una fila en la tabla con base en estos campos y devuelva los valores de todas sus columnas.
-
Registro original
city1:sh name:maki pop1:200 -
Regla de transformación
e_tablestore_map( [("city1","city"), ("pop1", "pop")], "https://d00s0dxa****.cn-hangzhou.ots.aliyuncs.com", "LTA3****", "VIH9****", "d00s0dxa****", "table_name_test") -
Resultado
city:sh name:maki pop:200 cid:3 province:sh region:huadong
-
-
Ejemplo 3: busque una fila en la tabla de datos con base en los campos city y pop, y devuelva los valores de todas sus columnas. Establezca output_table_name como
"table_name". En el resultado devuelto, consulte el nombre de la tabla de datos donde se almacenan los datos obtenidos.-
Registro original
city:sh name:maki pop:200 -
Regla de transformación
e_tablestore_map( ["city","pop"], "https://d00s0dxa****.cn-hangzhou.ots.aliyuncs.com", "LTA3****", "VIH9****", "d00s0dxa****", "table_name_test", output_table_name="table_name" ) -
Resultado
city:sh name:maki pop:200 cid:3 province:sh region:huadong table_name:table_name_test
-
-
Ejemplo 4: busque una fila en las tablas de datos table_name_test, table_name_test1 y table_name_test2 con base en los campos city y pop. Devuelva los valores de todas las columnas de la fila encontrada. En el resultado devuelto, solo se muestran los datos de la tabla table_name_test, ya que es la primera que se utiliza para la coincidencia.
-
Registro original
city:sh name:maki pop:200 -
Regla de transformación
e_tablestore_map( ["city","pop"], "https://d00s0dxa****.cn-hangzhou.ots.aliyuncs.com", "LTA3****", "VIH9****", "d00s0dxa****", ["table_name_test","table_name_test1","table_name_test2"], output_table_name="table_name" ) -
Resultado
city:sh name:maki pop:200 cid:3 province:sh region:huadong table_name:table_name_test
-
-
Ejemplo 5: busque una fila en la tabla de datos con base en las claves primarias pk1 y pk2 del índice secundario index1. Después, devuelva el valor de la columna predefinida definedcol2 correspondiente a dicha fila. Esta columna predefinida se especificó para el índice secundario index1.
-
Tabla de datos (index1)
pk1 (clave primaria)
pk2 (clave primaria)
definedcol2 (columna predefinida)
definedcol3 (columna predefinida)
pk1_1
pk2_1
definedcol2_1
definedcol3_1
pk1_2
pk2_2
definedcol2_2
definedcol3_2
-
Registro sin procesar
pk1:pk1_1 pk2:pk2_1 -
Regla de transformación
e_tablestore_map( ["pk1","pk2"], "https://d00s0dxa****.cn-hangzhou.ots.aliyuncs.com", "LTA3****", "VIH9****", "d00s0dxa****", "index1", output_fields= ["definedcol2"], output_table_name="table_name", ) -
Resultado
pk1:pk1_1 pk2:pk2_1 definedcol2:definedcol2_1 table_name:index1
-
-
e_redis_map
La función e_redis_map enriquece un registro sin procesar mediante una tabla de datos en ApsaraDB for Redis, la cual se utiliza como tabla de dimensiones.
-
Sintaxis
e_redis_map(field, output_field, host, port=6379, db=0, username=None, password=None, encoding="utf-8", max_retries=5, mode="fill-auto") -
Parámetros
Parámetro
Tipo
Obligatorio
Descripción
field
String
Sí
Campo del registro sin procesar que se usa para mapear los datos entre dicho registro y la tabla de datos. Si el registro no contiene este campo, no se ejecuta ninguna operación sobre él.
output_field
String
Sí
Campo de salida.
host
String
Sí
Endpoint de la base de datos de ApsaraDB for Redis.
username
String
No
Nombre de usuario de la cuenta con la que se conectará a la base de datos de ApsaraDB for Redis. De forma predeterminada, este parámetro está vacío, lo que indica que no se realiza la autenticación.
password
String
No
Contraseña de la cuenta con la que se conectará a la base de datos de ApsaraDB for Redis. De forma predeterminada, este parámetro está vacío, lo que indica que no se realiza la autenticación.
port
Integer
No
Puerto de la base de datos de ApsaraDB for Redis. Valor predeterminado: 6379.
db
Integer
No
Nombre de la base de datos de ApsaraDB for Redis. Valor predeterminado: 0.
encoding
String
No
Método de codificación de los datos en la base de datos de ApsaraDB for Redis. Valor predeterminado: utf-8.
max_retries
Integer
No
Número máximo de reintentos permitidos cuando falla una solicitud de conexión a la base de datos de ApsaraDB for Redis. Valor predeterminado: 5.
Si la solicitud de conexión falla después de alcanzar el número máximo de reintentos, la función omite el registro actual durante la transformación. Esto no afecta las transformaciones posteriores.
Cada intervalo entre reintentos duplica al anterior. Los intervalos van de 1 s a 120 s.
mode
String
No
Modo de sobrescritura de los campos. Valor predeterminado: fill-auto. Para obtener más información, consulte Field extraction check and overwrite modes.
-
Respuesta
Se devuelve un registro que contiene un campo nuevo.
-
Ejemplos
A continuación se presentan ejemplos basados en la siguiente tabla de datos de ApsaraDB for Redis.
ImportanteSolo son compatibles los valores de tipo string.
Clave
Valor
i1001
{ "name": "Orange", "price": 10 }
i1002
{ "name": "Apple", "price": 12 }
i1003
{ "name": "Mango", "price": 16 }
-
Ejemplo 1: buscar un valor en la tabla de datos a partir del campo item y devolverlo. En la regla de transformación no se especifican el nombre de usuario ni la contraseña de la cuenta utilizada para conectarse a la base de datos de ApsaraDB for Redis.
-
Registro sin procesar
item: i1002 count: 7 -
Regla de transformación
e_redis_map("item", "detail", host="r-bp1olrdor8353v4s.redis.rds.aliyuncs.com") -
Resultado
item: i1002 count: 7 detail: { "name": "Apple", "price": 12 }
-
-
Ejemplo 2: buscar un valor en la tabla de datos a partir del campo item y devolverlo. En la regla de transformación se especifican el nombre de usuario y la contraseña de la cuenta utilizada para conectarse a la base de datos de ApsaraDB for Redis.
-
Registro sin procesar
item: i1003 count: 7 -
Regla de transformación
e_redis_map("item", "detail", host="r-bp1olrdor8353v4s****.redis.rds.aliyuncs.com", username="r-bp****", password="***") -
Resultado
item: i1003 count: 7 detail:{ "name": "Mango", "price": 16 }
-
-