Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Kommandoen PQTest sammenlign er et effektivt værktøj til regressionstest, så du kan evaluere connectorens funktioner og generering af kommandotekst grundigt. For at illustrere dens alsidighed giver de følgende afsnit forskellige eksempler tilpasset forskellige scenarier.
Vigtigt!
Kommandoen run-compare erstatter compare kommandoen. Brug run-compe-kommandoen til fremtidig regressionstest af Power Query-forbindelserne.
Grundlæggende forespørgsler
Den simpleste form for test er at tilføje et enkelt forespørgselsudtryk til en .query.pq fil, som du kan udføre med comply-kommandoen . PQTest evaluerer udtrykket og genererer en .pqout (output)fil med samme navn. For eventuelle efterfølgende kørsler sammenligner den outputtet genereret fra evalueringen af .query.pq filen med .pqout (output)filen med samme navn og returnerer outputtet af evalueringen.
Eksempel 1 – Kører kommandoen Sammenlign for en forespørgselsfil, når der ikke findes en outputfil
Følgende eksempel udfører en enkelt forespørgselstestfil .query.pq ved brug af den angivne Power Query-udvidelse og genererer outputfilen til sammenligning.
<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"
}
]
Eksempel 2 – Kører kommandoen Sammenlign for en forespørgselsfil, når der ikke findes en outputfil, og flaget FailOnMissingOutputFile er angivet
<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"
}
]
Eksempel 3 – Kører kommandoen sammenlign for en forespørgselsfil med en outputfil, der findes
Følgende eksempel udfører en enkelt forespørgselstestfil ved hjælp af det angivne Power Query-filtypenavn, sammenligner den med outputfilen og returnerer resultatet.
<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"
}
]
Test med parameterforespørgsel
Parameterforespørgsel er en forespørgsel, der kombineres med en testforespørgsel på kørselstidspunktet, hvor parameterforespørgslen kører først. Med denne funktionalitet kan du opdele PQ-/testforespørgselsfilen i to dele: parameterforespørgselsfilen og testforespørgselsfilen.
Test af agnostisk datakilde med parameter- og testforespørgselsformat
Et eksempel på en use case, hvor denne funktionalitet ville være nyttig, er at oprette en agnostisk testpakke til datakilder. Du kan bruge din parameterforespørgsel til at hente data fra datakilden og lade testforespørgslen være generisk M. Hvis du vil køre testene for en anden connector, behøver du kun at tilføje/opdatere parameterforespørgslen, så den peger på den specifikke datakilde.
En vigtig forskel ved brug af en parameterforespørgsel er, at testforespørgslen følger et andet format. I stedet for at være et formeludtryk skal det være en M-funktion, der tager én inputparameter, som repræsenterer den tabel, der returneres fra parameterforespørgslen.
Lad os sige, at du har følgende testforespørgsel:
let
Source = Snowflake.Databases("...", "..."),
Database = Source{[Name="...",Kind="Database"]}[Data],
SelectColumns = Table.RemoveColumns(Database, { "Data" })
in
SelectColumns
Hvis du vil konvertere den til en test- og parameterforespørgsel, skal du opdele dem på følgende måde:
Parameterforespørgsel:
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
Testforespørgsel:
(Source) => let
SelectColumns = Table.RemoveColumns(Source, { "VendorID" })
in
SelectColumns
Eksempel 4 – Brug af både parameterforespørgsel og testforespørgsel med kommandoen sammenlign
<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"
}
]
Sammenligning af diagnosticering
Ekstra diagnosticeringsoplysninger kan evalueres, når du bruger kommandoen sammenlign ved at abonnere på en diagnosticeringskanal. Når sammenlign-kommandoen køres, udleverer PQTest en .diagnostics fil for hver abonneret kanal, der havde en hændelse. For efterfølgende kørsler sammenligner den diagnostiske hændelse med sin .diagnostics fil, ligesom .pqout.
Eksempel 5 – Abonnement på ODBC-diagnosticeringskanalen (Open Database Connectivity) for at validere forespørgselsdelegering
I følgende eksempel kan du se, hvordan du abonnerer på ODBC-kanalen, som registrerer sql, der genereres af ODBC-driveren, når forespørgselsdelegering bruges.
<Path to PQTest.exe>.\PQTest.exe compare -e contoso.mez -q contoso.query.pq -dc "Odbc"
ODBC-diagnosticeringskanalen kan bruges til at bekræfte, at en forespørgsel foldes, og at den genererer den korrekte SQL.
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
Forespørgslen foldes nu og genererer følgende ODBC-kommandotekst i filen .diagnostics :
[
{
"Command": "DESCRIBE default.DATABASE;"
},
{
"Command": "select top 1 max(`number_column`) as `C1` from `SPARK`.`default`.`DATABASE`"
}
]
Brug af en indstillingsfil
Alle kommandolinjeinputparametre for kommandoen sammenlign kan også overføres via en JSON-indstillingsfil. JSON kan have følgende indstillinger:
| Mulighed | Type | Beskrivelse |
|---|---|---|
| ExtensionPaths | matrix | Matrix af stier, der peger på connectorfilen (mez/pqx). |
| FailOnMissingOutputFile | Bool | Compare genererer ikke en .pqout fil og fejler, hvis den ikke eksisterer. |
| FailOnFoldingFailure | Bool | Sammenligningen mislykkes, hvis der udløses en fejl ved forespørgselsdelegering. |
| ParameterQueryFilePath | streng | Forespørgselsfil, der indeholder M-udtryk, som kombineres på kørselstidspunktet med testforespørgselsfilen. En almindelig use case er at have en enkelt parameterforespørgselsfil til at angive et M-udtryk for at hente dataene for flere testforespørgsler. |
| QueryFilePath | streng | Forespørgselsfil, der indeholder M-udtryk (.pq) der skal testes. |
| TrxReportPath | streng | Genererer en TRX (Visual Studio Test Results File) resultatfil og separate JSON-filer for hver test i en given sti. |
| Diagnosticeringskanaler | matrix | Navn på diagnostiske kanaler, der skal tilknyttes testkørslen (for eksempel Odbc til at fange query folding-sætninger). |
Hvis der angives både kommandolinjeinput og indstillinger, prioriteres kommandolinjeinputtet.
Eksempel 6 – Brug af indstillingsfilen i stedet for kommandolinjeargumenter
<Path to PQTest.exe>.\PQTest.exe compare -e contoso.mez -q contoso.query.pq -fomof
Kommandoen svarer til følgende kommando:
<Path to PQTest.exe>.\PQTest.exe compare -sf settings.json
Hvor settings.json er følgende JSON-fil:
{
"ExtensionPaths": ["contoso.mez"],
"QueryFilePath": "contoso.query.pq",
"FailOnMissingOutputFile": true
}
Test batterier med kommandoen Sammenlign
Et testbatteri er en samling test, der evaluerer flere aspekter af din kode. Placer forespørgselsfilerne i den samme mappe, så PQTest nemt kan finde dem. I stedet for at overføre et bestemt testfilnavn skal du angive mappestien, og PQTest udfører alle .query.pq-testforespørgselsfilerne i et enkelt gennemløb.
Eksempel 7 – Kørsel af et batteri af test
Hvis der antages en mappe med navnet test, der indeholder følgende filer:
- contoso.testa.query.pq
- contoso.testb.query.pq
- contoso.testc.query.pq
Hele testbatteriet kan køres på følgende kommandolinje:
<Path to PQTest.exe>.\PQTest.exe compare -e contoso.mez -q .\test
Ignorerer test, når du kører et batteri af test
En test kan ignoreres, når du kører et batteri af test, ved at ændre filtypenavnet for .query.pq-filen til .query.pq.ignore.
Eksempel 8 – Ignorerer en test, når der køres et batteri af test
Hvis der antages en mappe med navnet test, der indeholder følgende filer:
- contoso.testa.query.pq
- contoso.testb.query.pq.ignore
- contoso.testc.query.pq
Filerne contoso.testa.query.pq og contoso.testc.query.pq køres, men contoso.testb.query.pq.ignore ignoreres, når følgende kommando udføres for at køre testbatteriet:
<Path to PQTest.exe>.\PQTest.exepqtest.exe compare -e contoso.mez -q .\test