Adattípusok a Power BI Desktopban

A cikk a Power BI Desktop és a Data Analysis Expressions (DAX) által támogatott adattípusokat ismerteti.

A Power BI Desktop az adatok betöltésekor megkísérli a forrásoszlop adattípusát egy olyan adattípussá alakítani, amely jobban támogatja a hatékonyabb tárolást, számítást és adatvizualizációt. Például ha egy, az Excelből importált oszlop adatai között nincsenek törtszámok, a Power BI Desktop átalakítja a teljes adatoszlopot Egész szám adattípusúvá, amely jobban használható az egész számok tárolásához.

Ez azért lényeges, mert egyes DAX-függvények speciális adattípus-követelményekkel rendelkeznek. Bár sok esetben a DAX implicit módon konvertálja az adattípust, bizonyos esetekben ez mégsem történik meg. Például, ha egy adott DAX-függvény Dátum típusú adatot vesz fel, az oszlop azonban Szöveg típusú adatokat tartalmaz, a DAX-függvény nem működik majd megfelelően. Ezért fontos és hasznos is megfelelően megadni az oszlop adatainak típusát. Az implicit konverzióról a cikk későbbi részében lesz szó.

Oszlop adattípusának megállapítása és megadása

Az Power BI Desktop meghatározhatja és megadhatja egy oszlop adattípusát a Power Query-szerkesztő, illetve adatnézetben vagy jelentésnézetben:

Adattípusok a Power Query-szerkesztő

Screenshot of the Data type ribbon, showing it in the Query Editor.

Adattípusok az Adat- vagy Jelentésnézetben

Screenshot of the Data type ribbon, showing it in the Data View.

A Power Query-szerkesztő Adattípus legördülő menüjében két olyan adattípus található, amelyek jelenleg nem szerepelnek az Adat- vagy Jelentésnézetben: Dátum/idő/időzón és Időtartam. Ha egy ilyen adattípusú oszlopot tölt be a modellbe, majd az Adat- vagy Jelentésnézetben tekinti meg, a Dátum/idő/időzóna típusú oszlop Dátum/idő típusúvá, az Időtartam típusú oszlop Tizedes tört típusúvá lesz konvertálva.

A bináris adattípus jelenleg nem támogatott a Power Query-szerkesztő kívül. A Power Query-szerkesztő belül bináris fájlok betöltésekor is használhatja, ha más adattípusra konvertálja, mielőtt betöltené az Power BI modellbe. Az Adatnézet és a Jelentésnézet menüjében a visszamenőleges kompatibilitás miatt szerepel, de ha bináris oszlopokat próbál a Power BI-modellbe betölteni, hibák keletkezhetnek.

Számtípusok

A Power BI Desktop három számtípust támogat:

Tizedes tört – Egy 64 bites (nyolc bájtos), lebegőpontos számot jelöl. Ez a leggyakoribb számtípus, hiszen a számokra általában ebben a formában gondolunk. Bár ez az adattípus tört értékű számok kezelésére lett kitalálva, egész számok kezelésére is alkalmas. A Tizedes tört típus által kezelt értékek: negatív értékek -1,79E +308 és -2,23E -308 között, 0, pozitív értékek 2,23E -308 és 1,79E +308 között. Például a 34, a 34,01 és a 34,000367063 mind érvényes tizedes tört szám. A Tizedes tört típus által megjeleníthető legnagyobb pontosság 15 számjegy hosszúságú. A tizedeselválasztó bármelyik pozícióban lehet. A Tizedes tört típus megfelel annak, ahogy az Excel tárolja a számokat. A Tizedes tört adattípus a táblázatos objektummodellben (TOM) 1. adattípusként van megadva.

Fixpontos tizedes tört – A tizedeselválasztó rögzített helyen található. A tizedeselválasztótól jobbra minden esetben négy számjegy található, és a szám legfeljebb 19 helyiértéket tartalmazhat. A legnagyobb érték 922 337 203 685 477,5807 lehet (pozitív vagy negatív). A Fixpontos tizedes tört típus olyan esetekben hasznos, amikor a kerekítés hibákhoz vezethet. Ha sok olyan számmal dolgozik, amelyeknek kicsi a tört része, ezek összeadódhatnak, és az eredmény hibás lehet. Mivel a tizedesjeltől több mint négy pozícióval jobbra található értékek le vannak vágva, a Fixpontos tizedes tört segít elkerülni ezeket a hibákat. Ha ismeri SQL Server, ez az adattípus SQL Server decimális (19,4) vagy pénznem adattípusának felel meg az Analysis Servicesben és a Power Pivotban Excel. A Rögzített tizedes tört adattípus a TOM-ban 1. adattípusú DataType.Decimal Enum típusként van megadva.

Egész szám – Egy 64 bites (nyolc bájtos), egész számot jelöl. Mivel egész számról van szó, nincsenek számjegyek a tizedeselválasztótól jobbra. Legfeljebb 19 számjegyet tartalmazhat, és pozitív vagy negatív egész számokat jelölhet -9 223 372 036 854 775 807 (-2^63+1) és 9 223 372 036 854 775 806 (2^63-2) között. A különféle numerikus adattípusok közül ez a típus jelölheti a lehető legnagyobb pontosságú számot. Ahogy a Fixpontos tizedes tört szám típus, az Egész szám típus is hasznos lehet olyan esetekben, ahol felügyelet alatt szeretné tartani a kerekítést. A Teljes szám adattípus a TOM-ban DataType.Int64 Enum type 1 típusként van megadva.

Megjegyzés

A Power BI Desktop-adatmodell 64 bites egész számokat támogat, de a vizualizációk által biztonságosan kifejezhető legnagyobb szám 9 007 199 254 740 991 (2^53-1) a JavaScript-korlátozások miatt. Ha a fenti adatmodellben számokkal dolgozik, számításokkal csökkentheti a méretet, mielőtt hozzáadja őket egy vizualizációhoz.

1 - DataType enumerálás van megadva a táblázatos oszlop DataTypetulajdonságban. Az Power BI objektumainak programozott módosításáról a táblázatos objektummodellel Power BI adathalmazok programozásával foglalkozó témakörben olvashat bővebben.

A számtípus-számítások pontosságának biztosítása

A decimális szám adattípusú oszlopértékek hozzávetőleges adattípusokként vannak tárolva az IEEE 754 Szabvány szerint a lebegőpontos számok esetében. A közelítő adattípusok pontossága eredendően korlátozott, mivel ahelyett, hogy egy szám pontos értékét tárolnák, rendkívül közelítő vagy kerekített közelítésként tárolhatók. Ez azt jelenti, hogy pontossági veszteség vagy pontatlanság akkor fordulhat elő, ha a lebegőpontos számjegyek száma nem számszerűsíthető megbízhatóan a lebegőpontos értékben. Néhány jelentéskészítési forgatókönyvben váratlan vagy pontatlan számítási eredményként jelenhet meg a pontatlanság lehetősége.

A decimális szám adattípusú értékek közötti egyenlőséghez kapcsolódó összehasonlításokat (=, <>, = >és <=) végrehajtó számítások esetleg váratlan eredményeket adhatnak vissza. Ez akkor a legszembetűnőbb, ha a RANKX függvényt olyan DAX-kifejezésben használja, amelyben az eredményt kétszer számítja ki, így kissé eltérő számokat eredményez. A két szám közötti különbséget a jelentés felhasználója nem érzékeli, de a rangsor eredménye észrevehetően pontatlan lehet. A váratlan eredmények elkerülése érdekében módosíthatja az oszlop adattípusát tizedes törtrőlrögzített tizedes törtre vagy egész számra, vagy kényszerített kerekítést végezhet a KEREKÍTÉS funkcióval. A Rögzített tizedes tört adattípus nagyobb pontosságú, mert a tizedesjel mindig négy számjegyből áll jobbra.

Bár ritkán előfordul, hogy a decimális szám adattípusú oszlop értékeit összegző számítások váratlan eredményeket adhatnak vissza. Ez nagy valószínűséggel olyan oszlopokkal történik, amelyek nagy mennyiségű pozitív számmal és nagy mennyiségű negatív számmal rendelkeznek. Az összeg eredményét befolyásolja az értékek eloszlása az oszlop sorai között. Ha a lekérdezés eredményének visszaadásához szükséges számítás a legtöbb pozitív számot összegzi a negatív számok nagy részének összegzése előtt, a kezdeti részleges összeg elveszítheti a pontosságot, mivel a nagy pozitív részleges összeg eltolódhat. Ha viszont egy lekérdezés kiegyensúlyozott pozitív és negatív számokat ad hozzá, az összeg pontosabb marad, ezért pontosabb eredményeket ad vissza. A váratlan eredmények elkerülése érdekében módosíthatja az oszlop adattípusát tizedes törtrőlrögzített tizedes törtre vagy egész számra.

Dátum/idő típusok

A Power BI Desktop öt Dátum/idő adattípust támogat a Lekérdezésnézetben. A modellbe való betöltéskor a Dátum/idő/időzóna és az Időtartam típus konvertálva lesz. A Power BI Desktop adatmodellje csak a dátum-és időadatokat támogat, amelyek azonban egymástól függetlenül formázhatók dátumként vagy időpontként.

Dátum/idő – Egy dátum és egy idő értéket jelöl egyszerre. A háttérben a Dátum/idő érték Tizedes tört típusúként van tárolva. Így lényegében átalakíthatja ez értékeket az egyik típusból a másikba. A dátum idő része 1/300 másodperc (3,33 ezredmásodperc) egész többszöröseiként van tárolva. Az 1900. és 9999. közötti dátumok használata támogatott.

Dátum – Csak egy dátumot jelöl (időmegjelölés nélkül). A modellbe való konvertáláskor a Dátum típus ugyanúgy viselkedik, mint a Dátum/idő típus, ahol a törtrész nulla.

Idő – Csak egy időpontot jelöl (dátummegjelölés nélkül). A modellbe való konvertáláskor az Idő típus ugyanúgy viselkedik, mint a Dátum/idő típus, ahol az egész rész értéke nulla.

Dátum/idő/időzóna – Egy UTC-ben megadott dátum/idő értéket jelöl, időzóna-eltolással. Ez a típus Dátum/idő típussá lesz konvertálva a modellbe való betöltéskor. A Power BI-modell nem módosítja az időzónát a felhasználó helye vagy földrajzi helye alapján. Az 09:00 érték a modellben az Egyesült Államokban 09:00-ként jelenik meg a jelentés megnyitásakor vagy megtekintésekor.

Időtartam – Egy bizonyos hosszúságú időszeletet jelöl. Ez a típus Tizedes tört típusúvá lesz konvertálva a modellbe való betöltéskor. Tizedes tört típusként megfelelő eredményt ad, ha hozzáadják vagy kivonják a Dátum/idő mezőkből. Tizedes tört típusként könnyen használható nagyságrendet jelző vizualizációkban.

Szöveg típus

Szöveg – Egy Unicode kódolású adatsztring. Ez lehet szöveg formátumban jelölt sztring, szám vagy dátum. A sztring maximális hossza 268 435 456 Unicode-karakter (256 mega karakter) vagy 536 870 912 bájt.

Power BI olyan módon tárolja az adatokat, hogy bizonyos helyzetekben másként jelenítse meg az adatokat. Ez a szakasz azokat a gyakori eseteket ismerteti, amikor a szöveges adatokkal végzett munka kissé megváltozhat az adatok Power Query használatával történő lekérdezése, majd az adatok betöltése után.

Kis- és nagybetűk (in-)érzékenysége

A Power BI adatokat tároló és lekérdező motor nem különbözteti meg a kis- és nagybetűket, ami azt jelenti, hogy a motor a betűk különböző nagybetűsítését ugyanazzal az értékkel kezeli: az a egyenlő az A értékkel. Power Query azonban megkülönbözteti a kis- és nagybetűt: az anem egyenlő az A-val. A kis- és nagybetűk megkülönböztetése olyan helyzetekhez vezet, amikor a szöveges adatok betöltődnek Power BI, és később megmagyarázhatatlannak tűnően megváltoztatják a kis- és nagybetűk használatát. Az alábbi egyszerű példában a rendelések adatait töltöttük be: egy Rendelésno oszlopot, amely minden rendeléshez egyedi, és egy Címzett oszlopot, amely tartalmazza a címzett nevét, amelyet a rendelés időpontjában manuálisan kell megadni. Az Power Query ezek az adatok a következőképpen jelennek meg:

Textual data with various capitalizations in Power Query

Figyelje meg, hogy több, a címzettel azonos nevű megrendelés is létezik, bár a rendszer kissé eltérően adta meg őket.

Amikor az adatok betöltése után Power BI Adatok lapjára lépünk, ugyanaz a táblázat az alábbi táblázathoz hasonlóan néz ki.

The same textual data after loading into Power BI has changed capitalization

Figyelje meg, hogy egyes nevek nagybetűsítése megváltozott az eredetileg megadotttól. Ennek a változásnak az az oka, hogy az adatokat Power BI tároló motor nem megkülönbözteti a kis- és nagybetűket, és azonos karakter kis- és nagybetűs verzióját ugyanúgy kezeli. Power Query megkülönbözteti a kis- és nagybetűktől, ezért pontosan úgy jeleníti meg az adatokat, ahogyan a forrásrendszerben tárolták. A második képernyőképen szereplő adatok azonban be lettek töltve a Power BI motorjába, ezért megváltoztak.

Az adatok betöltésekor a motor minden sort egyenként kiértékel, felülről kezdve. A motor minden szövegoszlophoz (például a Címzetthez) egy egyedi értékekből álló szótárt tárol, hogy az adattömörítéssel elérhesse a teljesítményt. A Addressee oszlop feldolgozása során a motor első három értéke egyedi, és a szótárban van tárolva. A negyedik névtől kezdve (1004-as rendelés) azonban, mivel a motor kis- és nagybetűket nem megkülönböztető, a nevek azonosak: a Taina Hasu ugyanaz, mint a TAINA HASU és a Taina HASU. Ennek eredményeképpen a motor nem tárolja ezt a nevet, hanem arra az utónévre hivatkozik, amelyre rákerült. Ez azt is megmagyarázza, hogy a MURALI DAS név miért nagybetűkben van megírva, mivel ez egyszerűen a név írásának módja, amikor a motor először kiértékelte az adatokat az adatok felső részének betöltésekor.

Ez a kép a következő folyamatot ismerteti: Depiction of the data load process and mapping text values to a dictionary of unique values

A fenti példában a motor betölti az első adatsort, létrehozza a címszótárat , és hozzáadja Taina Hasu-t . A betöltött tábla Addressee oszlopában is hozzáad egy erre az értékre mutató hivatkozást. Ezt a második és a harmadik sorban is elvégzi, mivel mindkét név nem felel meg a többinek, ha figyelmen kívül hagyja a kis- és nagybetűket.

A rendszer összehasonlítja a negyedik sor címzettjét a szótárban szereplő névvel, és megtalálható: mivel a motor nem megkülönbözteti a kis- és nagybetűket, a TAINA HASU és a Taina Hasu azonosak. Ennek eredményeképpen a motor nem ad hozzá új nevet a címszótárhoz , hanem a meglévő névre hivatkozik. Ez megegyezik a többi sor esetében is.

Megjegyzés

Mivel a Power BI-ben adatokat tároló és lekérdező motor érzékeny a kis- és nagybetűkre, különös figyelmet kell fordítani a DirectQuery módban a kis- és nagybetűk megkülönböztetése miatt. Power BI feltételezi, hogy a forrás kiküszöbölte az ismétlődő sorokat; mivel Power BI nem különbözteti meg a kis- és nagybetűket, a rendszer két, esettől függően eltérő értéket csak duplikáltként kezel, míg a forrást nem lehet ilyenként kezelni. Ilyen esetekben a végeredmény nincs meghatározva, és el kell kerülni. Ha DirectQuery módot használ, és az adatforrás megkülönbözteti a kis- és nagybetűket, normalizálnia kell a burkolatokat a forrás lekérdezésben vagy Power Query.

Záró szóközök

Ha kezdő vagy záró szóközöket tartalmazó adatokkal dolgozik, a szöveg elején vagy végén lévő szóközök eltávolításához használja a Text.Trim függvényt, hogy elkerülje a félreértéseket, mivel a Power BI motor automatikusan levágja a záró szóközöket, a kezdő szóközöket azonban nem. A kezdő vagy záró szóközök eltávolítása nélkül előfordulhat, hogy nem sikerül kapcsolatot létrehoznia, mert ismétlődő értékeket észlel, vagy a vizualizációk váratlan eredményeket adhatnak vissza. Egyszerű példaként adatokat töltöttünk be az ügyfelekről: egy Név oszlopot, amely tartalmazza az ügyfél nevét, és egy indexoszlopot , amely minden bejegyzéshez egyedi. Figyelje meg, hogy az ügyfél neve négyszer ismétlődik, de minden alkalommal különböző kezdő és záró szóközökkel:

Sor Kezdő szóköz Záró szóköz Név (az egyértelműség kedvéért idézőjelek között) Index Szöveg hossza
1 Nem Nem "Dylan Williams" 1 14
2 Nem Igen "Dylan Williams" 10 15
3 Igen Nem " Dylan Williams" 20 15
4 Igen Igen " Dylan Williams " 40 16

Ezek a variációk manuális adatbevitellel is előfordulhatnak az idő múlásával. A Power Query az eredményként kapott adatok az alábbiak szerint jelennek meg.

Screenshot of textual data with various leading and trailing spaces in Power Query

Amikor az adatok betöltése után Power BI Adatok lapjára lépünk, ugyanaz a táblázat az alábbi ábrához hasonlóan néz ki.

Screenshot of the same textual data after loading into Power BI returns the same number of rows as before.

Az adatokon alapuló vizualizáció azonban csak két sort ad vissza.

Screenshot of a table visual based on the same data returns just two lines of data - the first row has a total index of 60 and the second row has a total index of 11.

Ahogy a fenti képen is látható, az első sor teljes értéke "60" az Index mezőhöz, ami arra a következtetésre vezet, hogy a vizualizáció első sora a korábban betöltött adatok utolsó két sorát jelöli, míg a második sor a "11" teljes indexértékkel az első két sort jelöli. A vizualizáció és az adattábla közötti sorok száma közötti különbséget az okozza, hogy a motor automatikusan eltávolítja (levágja) a záró szóközöket, a kezdő szóközöket azonban nem. Tehát az első és a második sor, valamint a harmadik és a negyedik sor azonosnak minősül, ezért a vizualizáció ezeket az eredményeket adja vissza.

Ez a viselkedés akkor fordulhat elő, ha vizualizációkkal dolgozik, és kapcsolatokhoz kapcsolódó hibaüzenetekkel is, mert ismétlődő értékeket észlel. A kapcsolatok konfigurációjától függően például az alábbi képen láthatóhoz hasonló hibaüzenet jelenhet meg.

Screenshot of an error message showing: Column 'Name' in Table 'Customers' contains a duplicate value 'Dylan Williams' and this is not allowed for columns on the one side of a many-to-one relationship or for columns that are used as the primary key of a table.

Más helyzetekben előfordulhat, hogy nem tud több-az-egyhez vagy egy-az-egyhez kapcsolatot létrehozni, mert a rendszer ismétlődő értékeket észlel.

Screenshot of the relationship dialog showing a 'the cardinality you selected isn't valid for this relationship' error, which is related to duplicate values being detected.

Ezek a hibák kezdő vagy záró szóközökre vezethetők vissza, és a Text.Trim függvénnyel oldhatók meg a szóközök eltávolításához az Adatátalakítási ablakban.

Igaz/hamis típus

Igaz/hamis – Egy logikai érték, amely vagy Igaz vagy Hamis.

Power BI bizonyos helyzetekben másképp konvertálja és jeleníti meg az adatokat. Ez a szakasz a logikai értékek konvertálásának gyakori eseteit és a váratlan eredményeket eredményező átalakítások Power BI.

A legjobb és legkonzisztensebb eredmény érdekében, ha logikai adatokat (igaz/hamis) tartalmazó oszlopot tölt be Power BI, állítsa az oszloptípust Igaz/Hamis értékre az alábbi példában ismertetett és ismertetett módon.

Ebben a példában adatokat töltöttünk be arról, hogy ügyfeleink regisztráltak-e a hírlevélre: az IGAZ érték azt jelzi, hogy az ügyfél feliratkozott a hírlevélre, a HAMIS érték azt jelzi, hogy az ügyfél nem regisztrált. Amikor azonban közzétesszük a jelentést a Power BI szolgáltatás, észrevehetjük, hogy a hírlevél regisztrációs állapotát nyomon követő oszlop az IGAZ vagy HAMIS értékek helyett 0 és -1 értékként jelenik meg. Az adatok lekérdezését, közzétételét és frissítését magában foglaló lépések alábbi gyűjteményei ismertetik az átalakítások menetét és azok megoldását.

A táblázat egyszerűsített lekérdezése, amely az alábbi képen látható.

Columns set to boolean

A Feliratkozás hírlevélre oszlop adattípusa Any értékre van állítva, és ennek az adattípus-beállításnak köszönhetően az adatok szövegként töltődnek be a Power BI modellbe:

Data loaded into Power B I appears as expected

Amikor hozzáadunk egy egyszerű vizualizációt, amely az ügyfélenkénti részletes információkat jeleníti meg, az adatok a várt módon jelennek meg a vizualizációban mind a Power BI Desktop, mind pedig a Power BI szolgáltatás közzétéve.

Visual shows data appearing as expected

Ha azonban frissítjük az adathalmazt a Power BI szolgáltatás a Feliratkozás hírlevélre oszlopban a vizualizációkban -1 és 0 értékeket jelenít meg ahelyett, hogy IGAZ vagy HAMIS értékként jelenítenénk meg őket:

Visual shows data appearing in an unexpected format after refresh

Ha újra közzéteszünk egy jelentést Power BI Desktop, a Feliratkozás hírlevélre oszlopban ismét igaz vagy HAMIS érték jelenik meg a várt módon, de ha a Power BI szolgáltatás frissítés történik, az értékek ismét -1 és 0 értékre változnak.

Ennek elkerülése érdekében a megoldás az, ha a logikai oszlopokat True/False (Igaz/Hamis) értékre állítja be Power BI Desktop, majd újból közzéteheti a jelentést.

Change the data type of the column to true false

A módosítás után a vizualizáció kissé eltérően jeleníti meg a Feliratkozás hírlevélre oszlop értékeit; Ahelyett, hogy a szöveg minden nagybetű (a táblázatban megadottak szerint), dőlt lesz, és csak az első betű lesz nagybetűs, ami az oszlop adattípusának módosításának eredménye.

Values appear differently when the data type is changed

Az adattípus módosítása és ismételt közzététele után a Power BI szolgáltatás, illetve frissítés esetén az értékek a várt módon True (Igaz) vagy False (Hamis) értékként jelennek meg.

When true or false values use the true false data type, data appears as expected after refresh

Összefoglalva, ha logikai adatokkal dolgozik Power BI, győződjön meg arról, hogy az oszlopok igaz/hamis adattípusra vannak állítva Power BI Desktop.

Üres/null érték típus

Üres – DAX-adattípus, amely az SQL nullértékeit jelöli és helyettesíti. Üres értékeket a BLANK függvénnyel hozhat létre, a meglévőket pedig az ISBLANK logikai függvénnyel ellenőrizheti.

Bináris adattípus

A bináris adattípus használatával bármely más adattípus bináris formátumban ábrázolható. A Power Query-szerkesztő belül bináris fájlok betöltésekor használhatja, ha más adattípusra konvertálja, mielőtt betöltené az Power BI modellbe. A Power BI-adatmodellben a bináris oszlopok nem támogatottak. Az Adatnézet és a Jelentésnézet menüjében a visszamenőleges kompatibilitás miatt szerepelnek, de ha bináris oszlopokat próbál a Power BI-modellbe betölteni, hibák keletkezhetnek.

Megjegyzés

Ha egy lekérdezés lépéseinek kimenetében bináris oszlop szerepel, az adatok átjárón keresztüli frissítésére tett kísérlet hibát okozhat. A lekérdezések utolsó lépéseként érdemes minden bináris oszlopot explicit módon eltávolítani.

Tábla adattípus

A DAX a tábla adattípust sok függvényben használja, például összesítésekben és időintelligencia-számításokban. Egyes függvényekben táblára mutató hivatkozást kell megadni, más függvények pedig táblákat adnak vissza, amelyek más függvényeknek átadhatók. Egyes táblát váró függvényeknek átadhatók függvényt visszaadó kifejezések, míg más függvényeknek csak alaptáblák adhatók át. Az egyes függvények követelményeivel kapcsolatos információkért lásd a DAX-függvények referencia-útmutatóját.

Implicit és explicit adattípus-konverzió a DAX-képletekben

Mindegyik DAX-függvény saját követelményekkel rendelkezik a bemeneti és kimeneti adatok típusát illetően. Például egyes függvények egész számot várnak egyes argumentumokra, dátumokat másokra, más függvények pedig szövegeket vagy táblákat várnak.

Ha az argumentumként megadott oszlopban lévő adatok típusa nem kompatibilis a függvény adattípus-követelményével, a DAX sok esetben hibát jelez. Azonban, ha csak lehetséges, a DAX megkísérli implicit módon konvertálni az adatokat a szükséges adattípusra. Például:

  • Beírhat egy dátumot szövegként, és a DAX megkísérli kielemezni a sztringet, és ráhúzni valamelyik windowsos dátum- és időformátumra.
  • Az IGAZ + 1 képlet eredménye 2 lesz, mivel az IGAZ értéket a rendszer implicit módon az 1 értékre konvertálja, majd elvégzi az 1+1 műveletet.
  • Ha két külön oszlopban ad meg értékeket, és az egyik történetesen szöveges értékeket tartalmaz ("12"), míg a másik számokat (12), a DAX implicit módon számmá konvertálja a sztringet, majd elvégzi az összeadást, és egy numerikus értéket ad vissza. A következő kifejezés értéke tehát 44 lesz: = "22" + 22.
  • Ha két számot próbál összefűzni, az Excel sztringként jeleníti meg, majd összefűzi azokat. A következő kifejezés az "1234" értéket adja vissza: = 12 & 34.

Az implicit adatkonverziókat bemutató táblázat

A végrehajtott konverzió típusát az operátor határozza meg, amely először átalakítja a szükséges értékeket, mielőtt elvégezné a kért műveleteket. Az alábbi táblázatok sorolják fel az operátorokat, és azt mutatják, hogy a vízszintesen jelölt adattípusok mivé lesznek konvertálva, ha az operátor a függőlegesen jelölt adattípusokkal köti össze őket.

Megjegyzés

A táblázatok a Szöveg adattípusait nem tartalmazzák. A szöveges formátumban megadott számok esetében a Power BI bizonyos esetekben megpróbálja meghatározni a Szám típust, és számként megjeleníteni az értéket.

Összeadás (+)

Operátor (+) EGÉSZ SZÁM CURRENCY VALÓS SZÁM Dátum/idő
EGÉSZ SZÁM EGÉSZ SZÁM CURRENCY VALÓS SZÁM Dátum/idő
CURRENCY CURRENCY PÉNZNEM VALÓS SZÁM Dátum/idő
VALÓS SZÁM VALÓS SZÁM VALÓS SZÁM VALÓS SZÁM Dátum/idő
Dátum/idő Dátum/idő Dátum/idő Dátum/idő Dátum/idő

Például ha egy Valós számot egy Pénznem adattal együtt alkalmaz egy összeadásban, a rendszer mindkét adatot konvertálja VALÓS SZÁMMÁ, és eredményként is VALÓS SZÁMOT ad.

Kivonás (-)

A következő táblázatban a sorok a kisebbítendőt (bal oldal), az oszlopok a kivonandót (felül) jelzik.

Operátor (-) EGÉSZ SZÁM CURRENCY VALÓS SZÁM Dátum/idő
EGÉSZ SZÁM EGÉSZ SZÁM CURRENCY VALÓS SZÁM VALÓS SZÁM
CURRENCY CURRENCY PÉNZNEM VALÓS SZÁM VALÓS SZÁM
VALÓS SZÁM VALÓS SZÁM VALÓS SZÁM VALÓS SZÁM VALÓS SZÁM
Dátum/idő Dátum/idő Dátum/idő Dátum/idő Dátum/idő

Például ha egy Dátumot bármely más adattípussal együtt használ egy kivonási műveletben, a rendszer mindkét értéket Dátummá alakítja, és az értéket szintén Dátumként adja vissza.

Megjegyzés

Az adatmodellek az egyoperandusú operátort (-, negatív) is támogatják, ez az operátor azonban nem módosítja az operandus adattípusát.

Szorzás (*)

Operátor (\*) EGÉSZ SZÁM CURRENCY VALÓS SZÁM Dátum/idő
EGÉSZ SZÁM EGÉSZ SZÁM CURRENCY VALÓS SZÁM EGÉSZ SZÁM
CURRENCY PÉNZNEM VALÓS SZÁM CURRENCY PÉNZNEM
VALÓS SZÁM VALÓS SZÁM CURRENCY VALÓS SZÁM VALÓS SZÁM

Például ha egy Egész számot egy Valós számmal ötvöz egy szorzási műveletben, a rendszer mindkét számot Valós számmá alakítja, és az értéket szintén VALÓS SZÁMKÉNT adja vissza.

Osztás (/)

A következő táblázatban a sorok az osztandót, az oszlopok az osztót jelzik.

Operátor (/) (sor/oszlop) EGÉSZ SZÁM CURRENCY VALÓS SZÁM Dátum/idő
EGÉSZ SZÁM VALÓS SZÁM CURRENCY VALÓS SZÁM VALÓS SZÁM
CURRENCY PÉNZNEM VALÓS SZÁM CURRENCY VALÓS SZÁM
VALÓS SZÁM VALÓS SZÁM VALÓS SZÁM VALÓS SZÁM VALÓS SZÁM
Dátum/idő VALÓS SZÁM VALÓS SZÁM VALÓS SZÁM VALÓS SZÁM

Például ha egy Egész számot egy Pénznem típusú értékkel ötvöz egy osztási műveletben, a rendszer mindkét értéket Valós számmá alakítja, és az értéket szintén Valós számként adja vissza.

Összehasonlító operátorok

Az összehasonlítási kifejezésekben a logikai értékek nagyobbnak számítanak a sztringértékeknél, ezek pedig nagyobbak a numerikus vagy Dátum/idő értékeknél, míg ez utóbbi két kategória egyenrangúnak számít. A rendszer a logikai és sztringértékeket implicit módon nem konvertálja. Az ÜRES vagy az üres értékek 0/""/hamis értékké lesznek konvertálva, az összehasonlított érték adattípusának megfelelően.

Ezt a viselkedést az alábbi DAX-függvények jól példázzák:

Az =IF(FALSE()>"true";"A kifejezés igaz";"A kifejezés hamis") kifejezés „A kifejezés igaz” értéket adja vissza.

Az =IF("12">12;"A kifejezés igaz";"A kifejezés hamis") kifejezés „A kifejezés igaz” értéket adja vissza

Az =IF("12"=12;"A kifejezés igaz";"A kifejezés hamis") kifejezés „A kifejezés hamis” értéket adja vissza.

A numerikus és a Dátum/idő típus esetén a konverzió implicit módon történik a következő táblázatban foglaltaknak megfelelően:

Összehasonlító operátor EGÉSZ SZÁM CURRENCY VALÓS SZÁM Dátum/idő
EGÉSZ SZÁM EGÉSZ SZÁM CURRENCY VALÓS SZÁM VALÓS SZÁM
CURRENCY CURRENCY PÉNZNEM VALÓS SZÁM VALÓS SZÁM
VALÓS SZÁM VALÓS SZÁM VALÓS SZÁM VALÓS SZÁM VALÓS SZÁM
Dátum/idő VALÓS SZÁM VALÓS SZÁM VALÓS SZÁM Dátum/idő

Üres értékek, üres sztringek és nullértékek kezelése

A DAX nyelvben a nullértékeket, az üres értékeket, az üres cellákat és a hiányzó értékeket ugyanaz az új ÜRES értéktípus jelöli. Üres értékeket a BLANK függvénnyel is létrehozhat, a meglévőket pedig az ISBLANK függvénnyel ellenőrizheti.

Az üres értékek viselkedését a különféle műveletekben, például összeadásokban és összefűzésekben az egyes függvények határozzák meg. Az alábbi táblázat az üres értékek a DAX- és a Microsoft Excel-függvényekben való viselkedésének különbségeit foglalja össze:

Kifejezés DAX Excel
ÜRES + ÜRES BLANK 0 (nulla)
ÜRES + 5 5 5
ÜRES * 5 BLANK 0 (nulla)
5/ÜRES Végtelen Hiba
0/ÜRES NaN Hiba
ÜRES/ÜRES BLANK Hiba
HAMIS VAGY ÜRES HAMIS HAMIS
HAMIS ÉS ÜRES HAMIS HAMIS
IGAZ VAGY ÜRES IGAZ IGAZ
IGAZ ÉS ÜRES HAMIS IGAZ
ÜRES VAGY ÜRES ÜRES Hiba
ÜRES ÉS ÜRES BLANK Hiba

Következő lépések

Sokféle műveletet elvégezhet Power BI Desktop és adatokkal. A program képességeivel kapcsolatos további információkért lásd az alábbi forrásanyagokat: