Wat is zelf in Python: voorbeelden uit de echte wereld
Wat is zelf in Python: voorbeelden uit de echte wereld
Ik wil graag doorgaan met het verkennen van het dynamische gebruik van de DAX-functie COLUMNSTATISTICS() - een nieuwe, bijna volledig ongedocumenteerde DAX-functie die in augustus 2021 aan LuckyTemplates is toegevoegd en die een aantal zeer unieke aspecten heeft waarvan ik denk dat het heel interessant zal zijn om er vertrouwd mee te raken . Je kunt de volledige video van deze tutorial onderaan deze blog bekijken.
Ik heb veel geëxperimenteerd en een aantal echt interessante nieuwe dingen geleerd over hoe deze functie werkt en wat je ermee kunt doen. In mijn eerste blog over deze functie heb ik het gehad over enkele statische toepassingen. Vandaag ga ik het hebben over een aantal echt verbazingwekkende dynamische toepassingen van de functie op manieren waarop zelfs IntelliSense nog niet up-to-date is.
Inhoudsopgave
Hoe de DAX-functie COLUMNSTATISTICS werkt
Voor elke tabel en elk veld in uw gegevensmodel produceert COLUMNSTATISTICS een tabel met zes extra velden met een tabelnaam, kolomnaam, minimale en maximale waarden voor de kolom, kardinaliteit en een maximale lengte. Dat lijkt niet veel data, maar daar kun je veel mee doen.
De gegevens die ik momenteel gebruik, zijn slechts de oefengegevensset voor de externe tools van LuckyTemplates. Het is een relatief eenvoudig gegevensmodel met tabellen met vijf dimensies, een feitentabel en een meettabel . Zo'n model is niet zo moeilijk bij te houden, maar een complex model heeft een veel complexere dataset-monitoring nodig.
De metadata voor een complexe dataset worden veel belangrijker als het gaat om het kijken naar kardinaliteit, het aantal unieke waarden binnen een veld. Het heeft een grote invloed op de grootte van uw model en mogelijk op de verwerkingssnelheid.
Bovendien helpt het bij het bouwen van een model om niet alleen het aantal tabellen te kennen, maar ook het datumbereik van die tabellen. Terwijl u uw tabel met datums opbouwt, zorgt u ervoor dat u het volledige scala aan gegevens in uw feitentabel dekt.
Laten we dus voor dit voorbeeld proberen een tabel toe te voegen aan dit datamodel waar ik aan werk. In de Power Query gaan we naar New Source en vervolgens naar Blank Query . En dan gaan we naar de geavanceerde editor en ik ga gewoon een functie plakken die heet List.Dates . We gaan dat gebruiken om een tabel te maken met de kardinaliteit van 10.000, dus dat zijn 10.000 unieke datums.
Het zal een lijst met 10.000 items retourneren en we kunnen die gewoon naar een tabel converteren en die tabel vervolgens een andere naam geven.
We kunnen het veld hier tot nu toe wijzigen. En als we op Sluiten en Toepassen klikken, zullen we zien dat ons slimme verhaal dynamisch wordt bijgewerkt, zonder dat we het hele model hoeven te vernieuwen (zoals we in het verleden deden).
De reden waarom dit volledig dynamisch is, is dat we het allemaal doen met maatregelen. Het interessante is dat het veel fouten laat zien, en de functie zo nieuw is dat IntelliSense het niet goed oppakt, maar het werkt wel.
Laten we naar Tabular Editor 3 gaan, wat volgens mij de beste manier is om erachter te komen wat de complexe DAX-metingen eigenlijk doen.
Onthoud dat de DAX-query tabellen retourneert in plaats van scalers. Dus als we deze meting nemen en deze naar een DAX-query kopiëren , wordt er een fout weergegeven omdat het resultaat hier nog steeds een scaler is. We kunnen de foutopsporingsbenadering gebruiken door dat RETURN-resultaat te vervangen door individuele componenten van de meting.
In dit geval vervangen we het door ColStats , wat we bovenaan hebben gedaan, is gewoon die COLUMNSTATISTICS DAX-functie in een variabele plaatsen. Daarmee krijgen we precies wat we verwachten, namelijk de standaard tabel met kolomstatistieken.
En nu willen we alleen kijken naar de kolom Tabelnaam, en we willen de verschillende waarden daaruit halen en die tellen. Dat wordt het aantal tabellen in ons gegevensmodel.
Eerst selecteren we kolommen in onze ColStats-tabel en geven we dat tabelnaamveld terug. Meestal wilt u in een DAX-meting of een DAX-query een veldnaam retourneren met de tabelnaam ervoor. Maar in dit geval weten we niet waar de juiste tabelnaam naar verwijst, omdat deze alleen virtueel bestaat. Het lijkt erop dat de naam van de variabele niet als tabelnaam wordt geaccepteerd.
Dus in dit geval moeten we het houden bij wat lijkt op een meting, maar het is eigenlijk een kolomverwijzing zonder de tabelverwijzing ervoor. En dat werkt nog steeds, ook al is het verwarrend in de nomenclatuur. Als we nu deze RETURN-instructie vervangen door onze TabCol , krijgen we precies wat we verwachten, namelijk dat modeltabellenveld.
En dan doen we voor het resultaat gewoon een telling van de verschillende tabelkolommen. Dus als we dit vervangen door DISTINCT(TabsCol) , krijgen we onze zeven tabellen.
Laten we nu eens kijken naar de hoogste kardinaliteit in de hoogste kardinaliteitstabel en zien hoe we die hebben gekregen. Dit is eigenlijk een belangrijk patroon dat u kunt gebruiken voor veel verschillende dingen waar u naar op zoek bent, niet alleen voor het maximale aantal, maar ook voor het maximale kenmerk dat aan dat nummer is gekoppeld.
Laten we dus eens kijken naar de MaxCardinality . Ook al is dit een scaler, we kunnen er een eencellige tabel van maken door er gewoon haakjes omheen te plaatsen. En als we er vijf hebben, zien we dat dat de kardinaliteitswaarde van 10.000 is.
Dus nu is de vraag, hoe nemen we dit en retourneren we de tabel die bij die kardinaliteit hoort.
Om dat te doen, gebruiken we dit veel voorkomende patroon met behulp van . We kopiëren het vervolgens naar onze RETURN-instructie en het geeft ons de rij die we verwachtten te krijgen, namelijk de kolom 10.000 datums. In plaats van één rij te krijgen (omdat het TOPN is), krijgen we er twee omdat er een gelijkspel is.
Wat ColStats ook doet, is dat het voor elke tabel een index maakt in een verborgen indexrij genaamd RowNumber , waarbij dat een unieke identificatie is voor elke rij van de tabel. Zodat MaxCardinality altijd wordt gespiegeld door het RowNumber als dat een unieke identificatie is.
En dus maakt het niet echt uit dat we twee rijen hebben, want waar we naar kijken is het maximum van de tabelnaam. En dat max is er alleen maar om een waarde terug te geven die anders gewoon een naakte kolom zou zijn. Maar we moeten daar wat aggregatie omheen doen, en in dit geval gebruiken we .
Als we vervolgens MaxCardinality in onze RETURN-instructie plaatsen en tussen haakjes plaatsen om een tabel te retourneren in plaats van een scaler, wordt de waarde van Test geretourneerd.
Dit TOPN DAX-patroon is een heel goed patroon om te onthouden wanneer u in feite een maximale of minimale waarde wilt berekenen en vervolgens een attribuut wilt retourneren dat aan die minimale of maximale waarde is gekoppeld.
LuckyTemplates-formules optimaliseren met behulp van geavanceerde DAX
Analyse van DAX-metingen: lange DAX-metingen opsplitsen
DAX-metingen in LuckyTemplates met vertakking van metingen
Conclusie
Ik heb u de algemene aanpak en context gegeven die we kunnen gebruiken om op dynamische wijze optimaal gebruik te maken van de DAX-functie COLUMNSTATISTICS. Door dit dynamisch te kunnen volgen in termen van een complex model, denk ik dat deze functie enorm waardevol is.
Hoe meer we experimenteren met de COLUMNSTATISTICS-functie en met de mogelijkheid om dynamisch metadata binnen DAX te verwerken, des te interessantere toepassingen gaan we vinden. Dus als je al een aantal interessante toepassingen voor deze DAX-functie hebt gevonden, laat het me dan weten in de reacties hieronder.
Al het beste!
Wat is zelf in Python: voorbeelden uit de echte wereld
Je leert hoe je objecten uit een .rds-bestand in R opslaat en laadt. In deze blog wordt ook besproken hoe je objecten uit R naar LuckyTemplates importeert.
In deze tutorial over DAX-coderingstaal leert u hoe u de functie GENERATE gebruikt en hoe u de titel van een maat dynamisch wijzigt.
Deze zelfstudie behandelt hoe u de Multi Threaded Dynamic Visuals-techniek kunt gebruiken om inzichten te creëren op basis van dynamische gegevensvisualisaties in uw rapporten.
In dit artikel zal ik de filtercontext doornemen. Filtercontext is een van de belangrijkste onderwerpen waarover elke LuckyTemplates-gebruiker in eerste instantie zou moeten leren.
Ik wil laten zien hoe de online service LuckyTemplates Apps kan helpen bij het beheren van verschillende rapporten en inzichten die uit verschillende bronnen zijn gegenereerd.
Leer hoe u wijzigingen in uw winstmarge kunt berekenen met behulp van technieken zoals vertakking van metingen en het combineren van DAX-formules in LuckyTemplates.
Deze tutorial bespreekt de ideeën van materialisatie van datacaches en hoe deze de prestaties van DAX beïnvloeden bij het leveren van resultaten.
Als u tot nu toe nog steeds Excel gebruikt, is dit het beste moment om LuckyTemplates te gaan gebruiken voor uw zakelijke rapportagebehoeften.
Wat is LuckyTemplates Gateway? Alles wat u moet weten