< návrat zpět

MS Excel


Téma: DAX DATUM rss

Zaslal/a 25.9.2018 11:23

Jeza.mZdravím,
snad mi někdo poradí, kde bych mohl dělat chybu ...
Mám tabulku s polem (FY_PERIODA) obsahujícím například text 201805 (Fiskální rok a perioda)
Pomocí funkcí v datovém modelu z toho chci udělat kalendářní datum, ale ve stejném formátu, tzn. mínus 3 měsíce, výsledkem by mělo být 201802.
Když použiji DAX funkci ...
=DATEADD(DATE(left(DATA[FY_PERIODA];4)*1;right(DATA[FY_PERIODA];2)*1;1);-3;MONTH)
Tak mi to vrací chybu s hláškou že pro funkci DATEADD nedodávám datum, což je nějaké divné když mu dodávám výsledek funkce DATE.
Když to rozdělím do dvou sloupců ...
=DATE(left(DATA[FY_PERIODA];4)*1;right(DATA[FY_PERIODA];2)*1;1)
a následně nad ním udělám DATEADD...
=DATEADD(DATA[POMOCNY];-3;MONTH)
Tak to funguje.
Nicméně chtěl jsem si ušetřit pomocný sloupec :-).

Díky
za Tipy.

M@

Zaslat odpověď >

#041569
MePExG
Ale výsledok je dátum a nie RRRRMM. DATEADD sa zvyčajne používa na posuny v čase oproti kalendáru pri funkcii calculate([Hodnota],DATEADD(Kalendar[Date],-3,Month)), ako filtračný argument, preto nechápem Vašu potrebu použitia. V PQ si urobte 201805 dátum 1.5.2018 a potom použite kalendárny posun, alebo v PQ si vypočítajte do stĺpca potrebné obdobie. Prikladám riešenie v PQ aj PP dax=FORMAT(if(VALUE(RIGHT(Table1[fyper];2))-3<=0;DATE(VALUE(LEFT(Table1[fyper];4))-1;12-(VALUE(RIGHT(Table1[fyper];2))-3)*-1;1);DATE(VALUE(LEFT(Table1[fyper];4));VALUE(RIGHT(Table1[fyper]))-3;1));"yyyymm")
Příloha: xlsx41569_pq-3m.xlsx (127kB, staženo 28x)
citovat
#041570
Jeza.m
Takhle by to taky šlo, pracovat čistě s tím stringem a použití podmínky.
Má představa byla převést to na datum, pomocí funkce DATE převést na datum, následně pomocí funkce DATEADD odečíst tři měsíce a to poslední bylo převést to do požadovaného formátu, což už jsem nezmiňoval, to je to nejjednodušší.
Obejít to lze více způsoby, ale já spíš doufal, že mi někdo vysvětlí proč mi to nefunguje :-).
Respektive teď když na to koukám, tak funkce DATEADD, když odečtu 3 měsíce od února, tak to nějak nefunguje, což klasicky ve VB/VBA funguje, tak jestli problém nebude v tom.
V příloze posílám upravený soubor, kde v datovém modelu jsou funkce tak jak bych si je představoval, ale z nějakého důvodu tak nefungují :-(. Jestli mi někdo dokáže vysvětlit tu chybu abych se poučil.

Díky
M@
Příloha: xlsx41570_pokusdateadd.xlsx (160kB, staženo 31x)
citovat
icon #041571
eLCHa
Funkcím DATEADD,DATEDIFF apod. nevěřím. Bylo už tu řešeno. Raději používám toto FY_PERIODA = "201805"
Debug.Print Format$(DateSerial(Val(Left$(FY_PERIODA, 4)), Val(Right$(FY_PERIODA, 2)) - 3, 1), "yyyymm")
citovat
#041572
MePExG
DATEADD je funkcia TimeInteligence, čo znamená, že pracuje výhradne na dátumovej tabuľke (kalendár, z ktorého dátum je takto označený) v Power Pivote a preto nedokázala niekedy vypočítavať dátumy a neberie vypočítaný dátum, ktorý ako argument nie je z tabuľky.citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje