Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El comando PQTest compare es una herramienta eficaz para las pruebas de regresión, lo que le permite evaluar exhaustivamente las funciones del conector y la generación de texto de comandos. Para ilustrar su versatilidad, las secciones posteriores proporcionarán una variedad de ejemplos adaptados a diferentes escenarios.
Consultas básicas
La forma más sencilla de realizar pruebas es agregar una expresión de consulta única a un archivo .query.pq, que puede ejecutar mediante el comando compare . PQTest evalúa la expresión y genera un archivo .pqout (salida) con el mismo nombre. Para las ejecuciones posteriores, compara la salida generada a partir de la evaluación del archivo .query.pq con el archivo pqout (salida) con el mismo nombre y devuelve la salida de la evaluación.
Ejemplo 1: Ejecución del comando compare para un archivo de consulta cuando no existe un archivo de salida
En el ejemplo siguiente se ejecuta un único archivo de prueba de consulta mediante la extensión de Power Query especificada y se genera un archivo de salida que se va a comparar.
<Path to PQTest.exe>.\PQTest.exe compare -e contoso.mez -q contoso.query.pq
[
{
"Details": "Contoso.Contents(\"TestEndpoint\")",
"EndTime": "2020-12-11T18:04:14.8991822+00:00",
"Method": "Compare.TestFiles",
"Name": "contoso.query.pq",
"StartTime": "2020-12-11T18:04:11.1532388+00:00",
"Output": [
{
"SourceFilePath": "contoso.query.pq",
"OutputFilePath": "contoso.query.pqout",
"Status": "Output File Generated",
"SerializedSource": null,
"SourceError": null,
"OutputError": null
}
],
"Status": "Passed",
"Type": "PQTest.Expression"
}
]
Ejemplo 2: ejecución del comando compare para un archivo de consulta cuando no existe un archivo de salida y se establece la marca FailOnMissingOutputFile
<Path to PQTest.exe>.\PQTest.exe compare -e contoso.mez -q contoso.query.pq -fomof
[
{
"Details": "Contoso.Contents(\"TestEndpoint\")",
"EndTime": "2020-12-11T18:04:14.8991822+00:00",
"Method": "Compare.TestFiles",
"Name": "contoso.query.pq",
"StartTime": "2020-12-11T18:04:11.1532388+00:00",
"Output": [
{
"SourceFilePath": "contoso.query.pq",
"OutputFilePath": "contoso.query.pqout",
"Status": "Missing Output File",
"SerializedSource": "Output of contoso.query.pq",
"SourceError": null,
"OutputError": null
}
],
"Status": "Failed"
"Type": "PQTest.Expression"
}
]
Ejemplo 3: Ejecución del comando compare para un archivo de consulta con un archivo de salida presente
En el ejemplo siguiente se ejecuta un único archivo de prueba de consulta mediante la extensión de Power Query especificada, se compara con el archivo de salida y se devuelve el resultado.
<Path to PQTest.exe>.\PQTest.exe compare -e contoso.mez -q contoso.query.pq
[
{
"Details": "Contoso.Contents(\"TestEndpoint\")",
"EndTime": "2020-12-11T18:04:14.8991822+00:00",
"Method": "Compare.TestFiles",
"Name": "contoso.query.pq",
"StartTime": "2020-12-11T18:04:11.1532388+00:00",
"Output": [
{
"SourceFilePath": "contoso.query.pq",
"OutputFilePath": "contoso.query.pqout",
"Status": "Passed",
"SerializedSource": null,
"SourceError": null,
"OutputError": null
}
],
"Status": "Passed",
"Type": "PQTest.Expression"
}
]
Prueba con consulta de parámetros
La consulta de parámetros es una consulta que se combina con una consulta de prueba en tiempo de ejecución, con la consulta de parámetros que se ejecuta primero. Esta funcionalidad le permite dividir el archivo de consulta PQ/test en dos partes: el archivo de consulta de parámetros y el archivo de consulta de prueba.
Pruebas de orígenes de datos independientes con parámetros y formato de consulta de prueba
Un ejemplo de caso de uso en el que esta funcionalidad sería útil es crear un conjunto de pruebas independiente del origen de datos. Puede usar la consulta de parámetros para recuperar datos del origen de datos y hacer que la consulta de prueba sea M genérica. Si desea ejecutar las pruebas para otro conector, solo tiene que agregar o actualizar la consulta de parámetros para que apunte a ese origen de datos específico.
Una diferencia clave al usar una consulta de parámetros es que la consulta de prueba sigue un formato diferente. En lugar de ser una expresión de fórmula, debe ser una función M que toma un parámetro de entrada, que representa la tabla devuelta desde la consulta de parámetros.
Supongamos que tiene la siguiente consulta de prueba:
let
Source = Snowflake.Databases("...", "..."),
Database = Source{[Name="...",Kind="Database"]}[Data],
SelectColumns = Table.RemoveColumns(Database, { "Data" })
in
SelectColumns
Para convertirlo en una consulta de prueba y parámetros, debe dividirlos de la siguiente manera:
Consulta de parámetros:
let
Source = Snowflake.Databases("...", "..."),
Database = Source{[Name="...",Kind="Database"]}[Data],
Schema = Database{[Name="...",Kind="Schema"]}[Data],
Taxi_Table = Schema{[Name="...",Kind="Table"]}[Data],
in
Taxi_Table
Consulta de prueba:
(Source) => let
SelectColumns = Table.RemoveColumns(Source, { "VendorID" })
in
SelectColumns
Ejemplo 4: Uso de la consulta de parámetros y la consulta de prueba con el comando compare
<Path to PQTest.exe>.\PQTest.exe compare -e contoso.mez -q contoso.query.pq -pa contoso.parameter.pq
[
{
"Details": "(Source) => let\r\n Schemas = Table.RemoveColumns(Source, { \"Data\" })\r\nin\r\n Schemas",
"EndTime": "2020-12-11T18:04:14.8991822+00:00",
"Method": "Compare.TestFiles",
"Name": "contoso.query.pq",
"StartTime": "2020-12-11T18:04:11.1532388+00:00",
"Output": [
{
"SourceFilePath": "contoso.query.pq",
"OutputFilePath": "contoso.query.pqout",
"Status": "Passed",
"SerializedSource": null,
"SourceError": null,
"OutputError": null
}
],
"Status": "Passed",
"Type": "PQTest.Expression"
}
]
Comparación de diagnósticos
Se puede evaluar información de diagnóstico adicional al usar el comando compare mediante la suscripción a un canal de diagnóstico. Cuando se ejecuta el comando compare , PQTest genera un archivo .diagnostics para cada canal suscrito que tenía un evento. Para las ejecuciones posteriores, compara el evento de diagnóstico con su archivo .diagnostics, similar a .pqout.
Ejemplo 5: suscripción al canal de diagnóstico ODBC (conectividad abierta de base de datos) para validar el plegado de consultas
En el ejemplo siguiente se muestra cómo suscribirse al canal ODBC, que captura cualquier SQL generado por el controlador ODBC cuando se usa el plegado de consultas.
<Path to PQTest.exe>.\PQTest.exe compare -e contoso.mez -q contoso.query.pq -dc "Odbc"
El canal de diagnóstico ODBC se puede usar para comprobar que una consulta está plegada y que está generando el SQL correcto.
let
Source = AzureSpark.Tables("...")
T1 = Source{[Schema="default",Item="DATABASE"]}[Data],
SelectColumns = Table.Group(T1, {}, {{"Maximum", each List.Max([number_column]), type number}}),
FirstN = Table.FirstN(SelectColumns, 1)
in
FirstN
La consulta ahora plega y genera el siguiente texto de comando ODBC en el archivo .diagnostics:
[
{
"Command": "DESCRIBE default.DATABASE;"
},
{
"Command": "select top 1 max(`number_column`) as `C1` from `SPARK`.`default`.`DATABASE`"
}
]
Uso de un archivo de configuración
Cualquier parámetro de entrada de línea de comandos para el comando compare también se puede pasar a través de un archivo de configuración JSON. Json puede tener las siguientes opciones:
| Opción | Tipo | Descripción |
|---|---|---|
| ExtensionPaths | array | Matriz de rutas de acceso que apuntan al archivo del conector (mez/pqx). |
| FailOnMissingOutputFile | bool | Compare no genera un archivo PQOut y produce un error si no existe. |
| FailOnFoldingFailure | bool | El comando Compare falla si se produce un error de plegado de consulta. |
| ParameterQueryFilePath | cuerda / cadena | Archivo de consulta que contiene expresiones M, que se combina en tiempo de ejecución con el archivo de consulta de prueba. Un caso de uso común es tener un único archivo de consulta de parámetros para especificar una expresión M para recuperar los datos de varias consultas de prueba. |
| QueryFilePath | cuerda / cadena | Archivo de consulta que contiene la expresión M (.pq) que se va a probar. |
| TrxReportPath | cuerda / cadena | Genera un archivo de resultados de TRX (archivo de resultados de pruebas de Visual Studio) y archivos JSON independientes para cada prueba en una ruta de acceso determinada. |
| DiagnosticChannels | array | Nombre de los canales de diagnóstico que se van a adjuntar a la ejecución de la prueba (por ejemplo, ODBC para captar instrucciones de plegado de consultas). |
En caso de que se proporcionen tanto la entrada en la línea de comandos como la opción de configuración, se da prioridad a la entrada en la línea de comandos.
Ejemplo 6: Uso del archivo de configuración en lugar de argumentos de la línea de comandos
<Path to PQTest.exe>.\PQTest.exe compare -e contoso.mez -q contoso.query.pq -fomof
El comando anterior es equivalente al siguiente comando:
<Path to PQTest.exe>.\PQTest.exe compare -sf settings.json
Donde settings.json es el siguiente archivo JSON:
{
"ExtensionPaths": ["contoso.mez"],
"QueryFilePath": "contoso.query.pq",
"FailOnMissingOutputFile": true
}
Probar baterías con el comando compare
Una batería de prueba es una colección de pruebas que evalúan varios aspectos del código. Coloque los archivos de consulta en la misma carpeta para que PQTest pueda localizarlos fácilmente. En lugar de pasar un nombre de archivo de prueba específico, especifique la ruta de acceso de la carpeta y PQTest ejecuta todos los archivos de consulta de prueba .query.pq en un solo paso.
Ejemplo 7: Ejecución de una batería de pruebas
Suponiendo que una carpeta denominada test contenga los siguientes archivos:
- contoso.testa.query.pq
- contoso.testb.query.pq
- contoso.testc.query.pq
Toda la batería de prueba se puede ejecutar mediante la siguiente línea de comandos:
<Path to PQTest.exe>.\PQTest.exe compare -e contoso.mez -q .\test
Omitir pruebas al ejecutar una batería de pruebas
Se puede omitir una prueba al ejecutar una batería de pruebas cambiando la extensión del archivo .query.pq a .query.pq.ignore.
Ejemplo 8: Omitir una prueba al ejecutar una batería de pruebas
Suponiendo que una carpeta denominada test contenga los siguientes archivos:
- contoso.testa.query.pq
- contoso.testb.query.pq.ignore
- contoso.testc.query.pq
Los archivos contoso.testa.query.pq y contoso.testc.query.pq se ejecutan, pero contoso.testb.query.pq.ignore se omite cuando se ejecuta el siguiente comando para ejecutar la batería de prueba:
<Path to PQTest.exe>.\PQTest.exepqtest.exe compare -e contoso.mez -q .\test