Někdy nastávají situace, kdy není předem přesně známo, kolik a které řádky je třeba ze zdrojových dat importovat. Předpokládejme, že musíme do Power Query načíst data z textového souboru, což na první pohled nepředstavuje velký problém. Potíž je v tom, že soubor je pravidelně aktualizován a zítra může mít jiný počet řádků s daty, záhlaví tři, nikoli dva řádky atd.:
To znamená, že nemůžeme předem s jistotou říci, od kterého řádku a přesně kolik řádků je třeba importovat. A to je problém, protože tyto parametry jsou pevně zakódovány v M-kódu požadavku. A pokud zadáte požadavek na první soubor (importujete 5 řádků počínaje 4.), pak to s druhým již nebude fungovat správně.
Bylo by skvělé, kdyby náš dotaz dokázal sám určit začátek a konec „plovoucího“ textového bloku pro import.
Řešení, které chci navrhnout, je založeno na myšlence, že naše data obsahují nějaká klíčová slova nebo hodnoty, které lze použít jako značky (funkce) začátku a konce datového bloku, který potřebujeme. V našem příkladu bude začátek řádku začínající slovem SKUa konec je řádek se slovem Celková cena. Toto ověření řádků lze v Power Query snadno implementovat pomocí podmíněného sloupce – analogu funkce IF (LI) v aplikaci Microsoft Excel.
Podívejme se, jak to udělat.
Nejprve načteme obsah našeho textového souboru do Power Query standardním způsobem – prostřednictvím příkazu Data – Získat data – Ze souboru – Z textového/CSV souboru (Data – Získat data – Ze souboru – Z textového/CSV souboru). Pokud máte Power Query nainstalovaný jako samostatný doplněk, budou příslušné příkazy na kartě Dotaz na napájení:
Jako vždy lze při importu vybrat znak oddělovače sloupců (v našem případě se jedná o tabulátor) a po importu odebrat automaticky přidaný krok upravený typ (Změněný typ), protože je příliš brzy na to, abychom přiřazovali datové typy sloupcům:
Nyní s příkazem Přidání sloupce – podmíněný sloupec (Přidat sloupec – podmíněný sloupec)přidáme sloupec se zaškrtnutím dvou podmínek – na začátku a na konci bloku – a v každém případě zobrazíme různé hodnoty (například čísla 1 и 2). Pokud není splněna žádná z podmínek, pak výstup null:
Po kliknutí na tlačítko OK dostaneme následující obrázek:
Nyní přejdeme na záložku. Proměna a vybrat tým Vyplnit – Dolů (Transformace – Vyplnění – Dolů) – naše jedničky a dvojky se protáhnou po koloně:
No, pak, jak asi tušíte, můžete jednoduše filtrovat jednotky v podmíněném sloupci – a zde jsou naše kýžené údaje:
Nezbývá než příkazem zvednout první řádek do záhlaví Použijte první řádek jako záhlaví Karta Domů (Domů – použijte první řádek jako záhlaví) a odstraňte nepotřebný více podmíněný sloupec kliknutím pravým tlačítkem na jeho záhlaví a výběrem příkazu Smazat sloupec (Smazat sloupec):
Problém je vyřešen. Nyní, když měníte data ve zdrojovém textovém souboru, dotaz nyní nezávisle určí začátek a konec „plovoucího“ fragmentu dat, která potřebujeme, a pokaždé importuje správný počet řádků. Tento přístup samozřejmě funguje i v případě importu XLSX, nikoli TXT souborů, stejně jako při importu všech souborů ze složky najednou příkazem Data – Získat data – Ze souboru – Ze složky (Data — Získat data — Ze souboru — Ze složky).
- Sestavení tabulek z různých souborů pomocí Power Query
- Přepracování kontingenční tabulky na plochý pomocí maker a Power Query
- Vytvoření projektového Ganttova diagramu v Power Query