Tabeller i LuckyTemplates: Typer og distinktioner

Jeg vil bruge lidt tid i dag på at tale om borde i LuckyTemplates. Vi løber ind i borde hele tiden med alle problemer, men vi bruger ikke rigtig meget tid på at tænke på dem alene. Du kan se den fulde video af denne tutorial nederst på denne blog.

Der var for nylig et indlæg fra LuckyTemplates-medlem, Ashton, som altid kommer med gode, tankevækkende spørgsmål. Hans forespørgsel fik mig til at tænke på et mønster, som jeg ser temmelig regelmæssigt og gerne vil behandle i denne tutorial.

Det var ikke en fejl, han begik, men det er en almindelig fejl. Jeg ser mange gange, hvor folk ville sige, at de har problemer med et virtuelt bord, for eksempel, når det ikke er et virtuelt bord i første omgang.

Der er en reel forskel mellem typerne af borde i LuckyTemplates.

Den analogi, jeg ville give, er, hvis nogen sagde, "Hey, jeg har for nylig adopteret en hund, og jeg har problemer med hunden og spekulerer på, om du kan hjælpe", og det er ikke en hund, men en ulv. De er begge hjørnetænder, men der er nogle ret store forskelle, som du gerne vil tage højde for.

Så selvom de alle er af den samme familie, ligesom tabellerne i LuckyTemplates, er de vigtige forskelle, der virkelig påvirker løsningen og hvordan du bruger disse tabeller. Så det, jeg ville gøre, var at gense Ashtons spørgsmål og derefter dykke lidt ned i forskellene mellem de tabeller, du finder i LuckyTemplates, og vise, hvordan det påvirker den måde, du håndterer dem på.

Spørgsmålet var ret simpelt, men der er lidt mere i det, end det umiddelbart ser ud til. Han havde et simpelt datasæt, der bare siger kunder, typen af ​​frugt, de købte, mængden og så bare et indeksnummer.

Tabeller i LuckyTemplates: Typer og distinktioner

Han ønskede at have en skæremaskine med en multi-select-funktion, så hvis du valgte at sige appelsin, ville den trække alle de kunder op, der købte appelsiner, men den ville også vise, hvad de ellers købte.

Tabeller i LuckyTemplates: Typer og distinktioner

Så hvis vi slår dette valg (orange) fra, kan vi se det fulde datasæt. Vi kan også se, at det er de to kunder (Joe og Mary), der købte appelsiner, men de havde også hver et ekstra køb.

Tabeller i LuckyTemplates: Typer og distinktioner

Så det første, vi ved, er, at frugtskæreren skal være et afbrudt skærebord. Hvis det var en almindelig udskærer, ville du ramme appelsin, og den ville stort set fjerne alt andet end appelsin i bordet. Vi ved også, at fordi dette er dynamisk, har vi et virtuelt bordproblem.

Så lad os dykke lidt ned i dette, men før vi gør det, lad os tage et kig på de forskellige typer tabeller, som vi finder i LuckyTemplates.

Indholdsfortegnelse

Tre typer borde i LuckyTemplates

Der er tre typer borde, som vi finder jævnligt. Den første er den mest almindelige, og det er en fysisk tabel, og dette er virkelig dine primære data. Hver gang du henter data eller indtaster data direkte gennem denne mulighed eller ind, laver du en reference eller duplikat, eller du indlæser data gennem en tom forespørgsel, som en datotabel, det er en fysisk tabel.

Tabeller i LuckyTemplates: Typer og distinktioner

En fysisk tabel er ikke fuldt dynamisk, men den har alle disse andre egenskaber, der øger filstørrelsen, fordi det er fysiske data. Det er tilgængeligt i Power Query. Typisk bygges relationerne i datamodellen gennem fysiske relationer. Det behøver de ikke at være, men det er de som regel. De bruges til primære data, og du visualiserer dem enten gennem datavisningen eller gennem Power Query.

Tabeller i LuckyTemplates: Typer og distinktioner

En fysisk tabel er ikke fuldt dynamisk, men den har alle disse andre egenskaber, der øger filstørrelsen, fordi det er fysiske data. Det er tilgængeligt i Power Query. Typisk bygges relationerne i datamodellen gennem fysiske relationer. Det behøver de ikke at være, men det er de som regel. De bruges til primære data, og du visualiserer dem enten gennem datavisningen eller gennem Power Query.

Den, der ofte bliver forvekslet med den virtuelle tabel, er denne beregnede tabel eller hvad vi også kan henvise til som en DAX-udtrykstabel. Dette har en direkte analogi til beregnede kolonner, der oprettes igennemudtryk. Dette gøres via fanebladet Modellering og indstillingen Ny tabel, og derefter indtaster du DAX-udtrykket.

Den, der ofte bliver forvekslet med den virtuelle tabel, er denne beregnede tabel eller hvad vi også kan henvise til som en DAX-udtrykstabel. Dette har en direkte analogi til beregnede kolonner, der er skabt gennem DAX-udtryk. Dette gøres via fanebladet Modellering og indstillingen Ny tabel, og derefter indtaster du DAX-udtrykket.

Tabeller i LuckyTemplates: Typer og distinktioner

Som du kan se fra sammenligningstabellen nedenfor, er den beregnede tabel en ganske anderledes profil end enten den fysiske tabel eller den virtuelle tabel. Det er ikke helt dynamisk.

Det skal opdateres for at hente de nye oplysninger. Det øger den fysiske filstørrelse. I modsætning til en direkte fysisk tabel er den ikke tilgængelig i Power Query. Ligesom en beregnet kolonne ikke vises i Power Query, gør en beregnet tabel det heller ikke. Men det besidder de andre aspekter af et fysisk bord.

Tabeller i LuckyTemplates: Typer og distinktioner

Typisk beregnede tabeller, der bruges til at understøtte tabeller og bruges mere almindeligt til fejlretning. Der er nu bedre værktøjer som DAX Studio og Tabular Editor, så det bruges ikke så ofte til det. Du får vist denne tabel gennem datavisningen.

Og ærligt talt, ligesom beregnede kolonner, er det generelt noget man skal holde sig fra. Der er bedre måder at gøre tingene på end gennem beregnede tabeller.

Og så er analogien til mål sandheden. Disse oprettes i forbindelse med foranstaltninger gennem DAX Measure Code. De er fuldt dynamiske i modsætning til de to andre typer borde. De øger ikke filstørrelsen, fordi de er on-demand. Ligesom mål, beregnes virtuelle tabeller on-demand i hukommelsen og bruges alle i løbet af sammenhænge, ​​som de er nødvendige til.

De er ikke tilgængelige i Power Query. Du kan ikke sætte et fysisk forhold til dem. Hvis du relaterer dem i din datamodel, gør du det ved hjælp af virtuelle relationer, oftest med.

Virtuelle tabeller bruges til mellemliggende beregninger i mål, fordi et mål ikke kan returnere en tabelværdi, og det skal returnere en skalarværdi. Så du bruger typisk dem som den foreløbige beregning, hvorpå du genererer dine scalere, som er det resulterende produkt af din foranstaltning.

Du kan visualisere disse tabeller i værktøjer som DAX Studio, Tabular Editor eller New Table, hvilket igen sandsynligvis er den mindst ønskværdige måde, fordi det roder din datamodel med en masse ekstra tabeller, medmindre du sletter dette.

DAX-målløsning til et virtuelt bord

Går vi tilbage til Ashtons spørgsmål, ved at se på tabellen, kan vi se, at det er dynamisk. Vi kan også gøre flere valg, og dette ændrer sig fuldt ud i farten. Og derfor ved vi, at det er en virtuel tabel, fordi de to andre (fysiske og beregnede tabeller) ikke er fuldt dynamiske. Vi ved også, at det er et afbrudt bord, som jeg nævnte i begyndelsen.

Tabeller i LuckyTemplates: Typer og distinktioner

Jeg brugte Rubber Duck-konceptet til at løse dette. I en tidligere tutorial har jeg talt om dette koncept med rubber ducking, som udvikler en konceptuel løsning på problemet, før du begynder at grave i den specifikke DAX.

Og så, til gummiand-løsningen her, det, jeg gjorde, var dybest set at sammensætte dette afmonterede skærebord. Så høstede jeg værdien af ​​disse skæremaskiner. Dernæst kom jeg med en virtuel tabel, der filtrerede klienter efter dem, der havde købt valgene i den afbrudte tabel.

Derefter tog jeg den kundeliste og filtrerede vores oprindelige datasæt af disse kunder for at komme med kunderne og de køb, som disse kunder havde foretaget, ud over slicerværdien.

Lad os tage et kig på den specifikke foranstaltning for at se, hvordan dette forløb, og nogle af de overvejelser, du har i arbejdet med virtuelle tabeller.

Tabeller i LuckyTemplates: Typer og distinktioner

Den første ting var at udvikle to høstmål for vores værdier. Den første er værdien af ​​den afbrudte slicer.

Da vi havde multi-selektionen i kravet, betød det, at vi ikke bare kunne bruge. Så det jeg gjorde var at brugefunktion til at fange potentielt et eller flere valg i den frakoblede udsnitsmaskine. For klienter kan vi bruge SELECTEDVALUE, da vi skal have én klient på hver række, som vi evaluerer.

Den næste ting, jeg gjorde, var denne virtuelle tabelvariabel ( VAR Buyers ), der starter med. Derefter går det til at filtrerekunder ved, om de foretog et frugtkøb, der var i vores værdier for den frakoblede udskærer.

Vi kan tjekke dette ud ved at lave en DAX-forespørgsel. Vi kan gøre det i enten DAX Studio eller i Tabular Editor. Så lad os tage vores virtuelle bordmål her, kopiere det over i tabeleditor. Vi vil sørge for, at det giver os de værdier, som vi forventer at se, hvilket ville være Joe og Mary.

Tabeller i LuckyTemplates: Typer og distinktioner

DAX-forespørgsler returnerer altid tabeller, og de startede altid med EVALUATE, så vi tilføjer EVALUATE her. Vi får dog ikke noget i resultatet. Dette skyldes, at den valgte disconnect fruit ( SelDisconnFruit ) høstvariabel ikke har kendskab til udskæreren. Det er ude af kontekst.

Så måden at teste det på er en slags kunstig indstilling af den skæremaskineværdi. Vi erstatter SelDisconnFruit med et lille bord her. Indtast Orange (værdien af ​​den skæremaskine) mellem snoede parenteser . Og nu får vi resultatet her, som er Joe og Mary. Med det fungerer den virtuelle tabel præcis, som vi troede, den ville.

Tabeller i LuckyTemplates: Typer og distinktioner

Så vi kan nu gå tilbage til vores måleudtryk. En af de udfordrende ting ved virtuelle tabeller er, at de er nemme at oprette virtuelle tabeller inden for et mål . Men du kan ikke returnere en virtuel tabel som et resultat af en måling . Så vi skal returnere en skalar, men den fanger det relevante aspekt af den virtuelle tabel.

Så her har vi den virtuelle tabel, der fortæller os, hvilke kunder der købte frugterne, der var i værdiudskæreren. Vi kan opsætte en anden variabel ( VAR BuyerIn ), der siger, at hvis den valgte klient var i denne købers tabel, så får den en en . Og hvis ikke, får den et nul .

Tabeller i LuckyTemplates: Typer og distinktioner

Så tager vi resultaterne af det og lægger det i filterruden. Key Buyers -målet, siger vi, er én, og det vil være de kunder, der købte, i dette tilfælde, appelsiner.

Tabeller i LuckyTemplates: Typer og distinktioner

Og ved at gøre det filtrerer vi vores oprindelige datatabel ned til de korrekte poster. Du kan se, at den nu opretter den virtuelle tabel, og den filtrerer korrekt baseret på hvert valg.




Konklusion

Det er hovedparten af ​​det, jeg ønskede at dække i dag. Det er et ret ligetil virtuelt tabeleksempel, men med fokus på forskellen mellem fysiske tabeller, beregnede tabeller og virtuelle tabeller.

Der er en masse interessante spørgsmål at gense med hensyn til virtuelle tabeller, især med fejlfinding af virtuelle tabelmål. Det er noget, jeg vil vende tilbage til inden for de næste par uger, men indtil videre er det hele denne tutorial.

Skål!


Oplev unik indsigt ved hjælp af LuckyTemplates TOPN-funktion

Oplev unik indsigt ved hjælp af LuckyTemplates TOPN-funktion

Denne blog indeholder LuckyTemplates TOPN DAX-funktionen, som giver dig mulighed for at få unik indsigt fra dine data, hvilket hjælper dig med at træffe bedre markedsføringsbeslutninger.

Datamodellering i LuckyTemplates ved hjælp af understøttende tabeller

Datamodellering i LuckyTemplates ved hjælp af understøttende tabeller

Lær nogle fantastiske analytiske teknikker, som vi kan gøre til datamodellering i LuckyTemplates ved hjælp af DAX-understøttende tabeller.

Avanceret DAX til LuckyTemplates: Implementering af rangeringslogik på tværs af unikke indsigter

Avanceret DAX til LuckyTemplates: Implementering af rangeringslogik på tværs af unikke indsigter

Her dykker vi ned i LuckyTemplates Advanced DAX og implementerer rangeringslogik for at få en meget unik indsigt. Jeg viser også måleforgrening i dette eksempel.

LuckyTemplates What-If-parameterfunktion

LuckyTemplates What-If-parameterfunktion

Denne blog introducerer den nye funktion i LuckyTemplates, What-If-analyseparameteren. Du vil se, hvordan det gør alt hurtigt og nemt til din scenarieanalyse.

Brug LuckyTemplates Mål forgrening for at kontrollere, om dine avancer udvides, efterhånden som omsætningen vokser

Brug LuckyTemplates Mål forgrening for at kontrollere, om dine avancer udvides, efterhånden som omsætningen vokser

Lær, hvordan du afgør, om din omsætningsvækst er god ved at kontrollere, om dine avancer er udvidet ved hjælp af LuckyTemplates, der måler forgrening.

LuckyTemplates-parametre via forespørgselseditor

LuckyTemplates-parametre via forespørgselseditor

Lær og forstå, hvordan du kan oprette og bruge LuckyTemplates Parameters, som er en kraftfuld funktion i Query Editor.

Rundt søjlediagram – en visualisering til dit dashboard

Rundt søjlediagram – en visualisering til dit dashboard

Denne vejledning vil diskutere om oprettelse af et rundt søjlediagram ved hjælp af Charticulator. Du lærer, hvordan du designer dem til din LuckyTemplates-rapport.

PowerApps funktioner og formler | En introduktion

PowerApps funktioner og formler | En introduktion

Lær, hvordan du bruger PowerApps-funktioner og -formler til at forbedre funktionaliteten og ændre adfærd i vores Power Apps-lærredsapp.

Pipe In R: Tilslutningsfunktioner med Dplyr

Pipe In R: Tilslutningsfunktioner med Dplyr

I denne øvelse lærer du, hvordan du kæder funktioner sammen ved hjælp af dplyr-røroperatoren i programmeringssproget R.

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX fra LuckyTemplates giver dig mulighed for at returnere rangeringen af ​​et specifikt tal i hver tabelrække, der udgør en del af en liste over tal.