Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  9 10 11 12 13 14 15 16 17   další » ... 37

Oracle je databáze. Nejdou ta data vyexportovat v použitelném formátu?

Pokud ne, tak v PQ máte např. unpivot, tím můžete dostat datumy do sloupců, případně můžete z jedné sestavy vyrobit 2 a více tabulek, které se budou chovat korektně.

Převody z US formátu jsou snadné...

Několik poznámek.

Pokud jde o úpravu vzorce, tak stačí k přičíst 0 a zadat jako maticový vzorec.

Pokud jde o oracle, tak datumy se načítají jako text. Tj. je nutná konverze na datum. A konverze se v excelu provede např. pomocí text do sloupců, nebo jako editací buňky nebo nahrazením nějakého znaku tak, aby se výsledek nezměnil. V případě datumu v našich krajinách je to nejčastěji znak tečka.

Lepší je samozřejmě načíst data rovnou ve správném formátu.
Pokud ovšem máte proměnný počet sloupců tak v PQ se jednak nastavuje formát celého sloupce a ošetření proměnlivého počtu sloupců vyžaduje přejít od klikání k psaní kódu.

Tj. nejprve srovnejte formát dat.

To vypadá na datum v textu.

Zkus maticově něco jako:
POZVYHLEDAT(B2+0;0+List1!$1:$1;0)

Pokud to spraví klik do buňka a enter, pak můžeš taky zkusit v datumech najít/nahradit tečku za tečku.

Z toho, co jsi napsal, se dá jen hádat. Úplně obecně, vizuály v pbi občas nesnášejí míry, které obsahují SUMMARIZECOLUMNS.
Tady ta míra je na můj vkus dost překombinovaná. Moc mi to nedává smysl, ale datový model je tajný. Zkus najít jednodušší řešení.

Oddělovač tam je, pevná mezera (char(160)). Stačí si ho nabrat do schránky a vložit do Text do sloupců.

(Ale chybí v prvním řádku, tam ho někdo už přepsal)

Alfan napsal/a:

Já zkoušel to od elninoslov, ale to mi nefunguje.


Co znamená "nefunguje"?
Nic to nehlásí?
Načte to něco?
...

@veny

veny napsal/a:


vzorec:1
=ZLEVA(POLÍČKO("filename");NAJÍT("...


Pokud používáš POLÍČKO bez odkazu, tak je aktualizace této buňky dost nespolehlivá. Tj. dokud neotevřeš list s buňkou, tak drží starou hodnotu. elnino to má korektně.

nebo
=SUMA(ČETNOSTI($A$1:$A$10000;UNIQUE(A1:$A$10000)))/POČET(UNIQUE(A1:A10000))

vysvětlovat to nebudu.

2 mil. řádků není problém, pracuji běžně se 100 - 150 mil. řádků. Nesmí se ale prohlížet základní tabulka řádek po řádku, ...

Sloupec se dá rozdělit i v datovém modelu. Bude to jen náročnější na paměť.

Připomínám, že pokud chceš optimalizovat výpočet, pak je DAX studio prakticky jediná volba (ukáže plán výpočtu včetně časů, ...).

Vypadá to, že mícháš datové typy v power query a v SQL serveru a/nebo typ parametru funkce s typem vrácené hodnoty.

Dotaz na server je TEXT. Datový typ v sql databázi ovlivňuje syntaxi dotazu, tj. jestli osobní číslo je dotazu jako číslo nebo je obalené uvozovkami.

"hodnota" by v každém případě měla být textem.

Pokud je personalnumber v db číslo, pak něco takového:


Osobni_cislo_Rov = (XXA as number) =>

let
Zdroj = Excel.CurrentWorkbook(){[Name="Tabulka2"]}[Content],

#"Změněný typ" = Table.TransformColumnTypes(Zdroj,{{"Osobní číslo", Int64.Type}}),

OC = #"Změněný typ"{0}[Osobní číslo],

// Když se to převede na text tady, je to dál jednodušší,
// může se také případně ošetřit chybějící hodnota, ...

#"Osobní číslo" = Text.From(OC)
in
#"Osobní číslo",

hodnota = Osobni_cislo_Rov(1),
// co to v tomto kroku ukazuje - je do správně????

// tady se skládá text dotazu
where = "Where personalnumber = " & hodnota & " "
// co to vrací tady? - je to správně (hodnota, syntaxe sql dotazu)?

Z ukázek vůbec není jasné co děláš.

Pokud máš problém s tou anonymní funkcí, tak funkce se volá s parametrem XXA, který
a) musí být zadán
b) musí být číslo
c) nesmí být null
d) ve funkci není použit.

Nepředvedl jsi, jak funkci voláš.

K čemu to má sloužit víš jen ty sám.

1. skládáš sql dotaz, tj. textový řetězec.
2. když si dotaz (vhodně upravíš a) odkrokuješ, můžeš se podívat co serveru posíláš
3. Celý dotaz v jednom kuse obvykle neskládám, rozdělím si to na vhodné kousky. Např. základní select (to co funguje) a where ... zvlášť. Manupulace s různými výběry je pak jednodušší.
4. Nejspíš bych skládal něco jako
"where personalnumber = '" & hodnota & "' "

Tak si to spočítej v kt a do výstupu si natáhni výsledek z kt (fce ZÍSKATKONTDATA).

Pro více sloupců a více hledaných hodnot ve sloupci:

Načtení filtrů

// Tabulka_filtr
let
Zdroj = Excel.CurrentWorkbook(){[Name="Tabulka_filtr"]}[Content],
#"Změněný typ" = Table.TransformColumnTypes(Zdroj,{{"A", type any}, {"B", type any}, {"C", type text}}),
#"Ošetření prázdného textu" = Table.ReplaceValue(#"Změněný typ","",null,Replacer.ReplaceValue,{"A", "B", "C"})
in
#"Ošetření prázdného textu"


Filtrování:


// Tabulka_data
let
Zdroj = Excel.CurrentWorkbook(){[Name="Tabulka1"]}[Content],
tabulka = Table.TransformColumnTypes(Zdroj,{{"A", Int64.Type}, {"B", type any}, {"C", type text}}),
FitrovaneSloupce = Table.ColumnNames(#"Tabulka_filtr"),
#"Filtrovano" = List.Accumulate(
FitrovaneSloupce,
tabulka, (x, s) =>
let
HodnotyFiltru = List.RemoveNulls(Table.Column(Tabulka_filtr,s)),
xxx = if List.Count(HodnotyFiltru) > 0 then
Table.SelectRows(x, each List.Contains(HodnotyFiltru, Record.Field(_, "" & s & "")))
else x
in
xxx
)
in
#"Filtrovano"


Hlavičky v tabulce filtrů (pokud chceme sloupec filtrovat) se musí shodovat s daty.

@Dingo
Dík za opravu, nechtělo se mi vymýšlet příklad ..., tak to bylo z hlavy.

Protože Hona se neobtěžuje poslat další informaci, tak jen pár poznámek:

Ošetření parametru na null případně prázdný řetězec je lepší provést při načtení parametru.

Pokud by se mělo testovat více hodnot v jednom sloupci, tak je nejspíš vhodné použít funkci List.Contains.

Pokud to má být filtr pro více sloupců, je samozřejmě možné zopakovat proceduru - vznikne něco...

Když potřebuju upravit víc sloupců v tabulce podle parametru, tak obvykle používám List.Accumulate (záleží na konkrétní potřebě).


Strana:  1 ... « předchozí  9 10 11 12 13 14 15 16 17   další » ... 37

Uživatelské menu

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

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

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

Aktivní diskuse