Több adatforrás kombinálása (Power Query)

Hatókör
Microsoft 365-höz készült Excel Excel 2024 Excel 2021 Excel 2019 Excel 2016

Ebben az oktatóanyagban a Power Query Lekérdezésszerkesztőjével adatokat importálhat egy termékinformációkat tartalmazó helyi Excel-fájlból, valamint egy termékrendelési adatokat tartalmazó OData-adatcsatornából. Átalakítási és összesítési lépéseket fog végezni, és adatokat fog kombinálni a két forrásból a "Total Sales per Product and Year" (Összes eladás termékenként és évenként) jelentés elkészítéséhez.   

Az oktatóanyag elvégzéséhez szüksége lesz a Termékek munkafüzetre. A Mentés másként párbeszédpanelen adja a fájlnak a Products and Orders.xlsx nevet.

1. feladat: Termékek importálása egy Excel-munkafüzetbe

Ebben a feladatban termékeket importál a Termékek és Orders.xlsx (fent letöltött és átnevezett) fájlból egy Excel-munkafüzetbe, sorokat léptet elő oszlopfejléccé, eltávolít néhány oszlopot, és betölti a lekérdezést egy munkalapra.

1. lépés: Csatlakozás egy Excel-munkafüzethez

  1. Hozzon létre egy Excel-munkafüzetet.
  2. Válassza az Adatok>beolvasása>fájlból>munkafüzetből lehetőséget.
  3. Az Adatimportálás párbeszédpanelen keresse meg és keresse meg a letöltött Products.xlsx fájlt, majd válassza a Megnyitás gombot.
  4. A Kezelő ablaktáblában kattintson duplán a Termékek táblára. Megjelenik a Power Query-szerkesztő.

2. lépés: A lekérdezési lépések vizsgálata

Alapértelmezés szerint a Power Query az Ön kényelme érdekében automatikusan felvesz számos lépést. További információkért vizsgálja meg a lekérdezésbeállítások ablaktábla Alkalmazott lépések csoportjában található egyes lépéseket.

  1. Kattintson a jobb gombbal a Forrás lépésre, és válassza a Beállítások szerkesztése parancsot. Ez a lépés a munkafüzet importálásakor jött létre.
  2. Kattintson a jobb gombbal a navigációs lépésre, és válassza a Beállítások szerkesztése parancsot. Ez a lépés akkor jött létre, amikor Ön kijelölte a táblát a Navigáció párbeszédpanelen.
  3. Kattintson a jobb gombbal a Módosított típus lépésre, és válassza a Beállítások szerkesztése parancsot. Ezt a lépést a Power Query hozta létre, amely kikövetkeztette az egyes oszlopok adattípusait. A teljes képlet megtekintéséhez válassza a szerkesztőléc jobb oldalán található lefelé mutató nyilat.

3. lépés: A többi oszlop eltávolítása, hogy csak a kívánt oszlopok maradjanak meg

Ebben a lépésben eltávolítja az összes oszlopot a következők kivételével: ProductID (Termékazonosító), ProductName (Terméknév), CategoryID (Kategóriaazonosító) és QuantityPerUnit (EgységenkéntiMennyiség).

  1. Az Adatok előnézete nézetben válassza ki a ProductID, a ProductName, a CategoryID és a QuantityPerUnit oszlopot (használja a Ctrl+Click vagy a Shift+Kattintás billentyűkombinációt).
  2. Válassza az Oszlopok>eltávolítása lehetőséget, távolítsa el a többi oszlopot.
    A többi oszlop elrejtése

4. lépés: A termékek lekérdezés betöltése

Ebben a lépésben betölti a Termékek lekérdezést egy Excel-munkalapra.

  • Válassza a Kezdőlap>, Bezárás & Betöltés lehetőséget. A lekérdezés megjelenik egy új Excel-munkalapon.

Összegzés: Az 1. feladatban létrehozott Power Query-lépések

Amikor lekérdezési műveleteket végez a Power Query szolgáltatásban, a lekérdezés lépései létrejönnek, és megjelennek a Lekérdezés beállításai ablaktáblában, az Alkalmazott lépések listában. Mindegyik lekérdezéslépéshez tartozik egy Power Query-képlet vagy más néven „M” nyelv. A Power Query-képletekről a Power Query-képletek létrehozása az Excelben című témakörben olvashat bővebben.

Művelet Lekérdezési lépés Képlet
Excel-munkafüzet importálása Forrás = Excel.Workbook(File.Contents("C:\Products and Orders.xlsx"), null, true)
A Termékek tábla kijelölése Navigálás: = Source{[Item="Products",Kind="Table"]}[Data]
A Power Query automatikusan észleli az oszlop adattípusait Módosított típus = Table.TransformColumnTypes( Products_Table,{{"ProductID", Int64.Type}, {"ProductName", type text}, {"SupplierID", Int64.Type}, {"CategoryID", Int64.Type}, {"QuantityPerUnit", type text}, {"UnitPrice", type number}, {"UnitsInStock", Int64.Type}, {"UnitsOnOrder", Int64.Type}, {"ReorderLevel", Int64.Type}, {"Discontinued", type logical}})
A többi oszlop eltávolítása, hogy csak a szükségesek maradjanak meg Egyéb oszlopok eltávolítása = Table.SelectColumns(FirstRowAsHeader,{"ProductID", "ProductName", "CategoryID", "QuantityPerUnit"})

2. feladat: Rendelési adatok importálása OData-adatcsatornából

Ebben a feladatban adatokat importál az Excel-munkafüzetbe a http://services.odata.org/Northwind/Northwind.svc Northwind minta OData-adatcsatornájából , kibővíti a Order_Details táblát, eltávolít oszlopokat, kiszámítja a sor végösszegét, átalakít egy OrderDate mezőt, csoportosítja a sorokat ProductID és Year szerint, átnevezi a lekérdezést, és letiltja a lekérdezés letöltését az Excel-munkafüzetbe.

1. lépés: Csatlakozás OData-adatcsatornához

  1. Válassza az Adatok>beolvasása> azOData-adatcsatornábóllehetőséget>.
  2. Az OData-adatcsatorna párbeszédpanelen írja be a Northwind OData-adatcsatorna URL-címét.
  3. Kattintson az OK gombra.
  4. A Kezelő ablaktáblában kattintson duplán a Rendelések táblára.

2. lépés: Egy Order_Details tábla kibontása

Ebben a lépésben bővíteni fogja az Order_Details (Rendelés_részletei) táblát, amely az Orders (Rendelések) táblához kapcsolódik, hogy kombinálja a ProductID (Termékazonosító), a UnitPrice (Egységár) és a Quantity (Mennyiség) oszlopot az Order_Details táblából az Orders táblába. A Kibontás művelet kombinálja az oszlopokat egy kapcsolódó táblából egy főtáblába. Amikor a lekérdezés fut, a program a kapcsolódó táblából (Order_Details) származó sorokat sorokká kombinálja az elsődleges táblával (Rendelések).

A Power Query alkalmazásban egy kapcsolódó táblát tartalmazó oszlop cellájában a Rekord vagy Táblázat érték szerepel. Ezeket strukturált oszlopoknak nevezzük. A rekord egyetlen kapcsolódó rekordot jelöl, és egy-az-egyhez kapcsolatot képez az aktuális adatokkal vagy az elsődleges táblával. A tábla egy kapcsolódó tábla, és egy-a-többhöz kapcsolatot képez az aktuális vagy elsődleges táblával. A strukturált oszlop relációs modellt alkalmazó adatforrás kapcsolatát jelöli. A strukturált oszlop például olyan entitást jelöl, amely egy OData-adatcsatornában idegen kulccsal van társítva, vagy egy SQL Server-adatbázisban idegen kulccsal van társítva.

Miután kibővítette a Order_Details táblát, három új oszlop és további sorok kerülnek be a Rendelések táblába: a beágyazott vagy kapcsolódó tábla minden sorához egy.

  1. Görgessen vízszintesen az Order_Details oszlopra az Adatok előnézete nézetben.

  2. A Order_Details oszlopban válassza a kibontás ikont (Kibontás).

  3. A Kibontás legördülő listában tegye a következőket:

    1. Válassza a (Válassza ki az összes oszlopot) lehetőséget az összes oszlop törléséhez.

    2. Válassza a Termékazonosító,az Egységár és a Mennyiség mezőt.

    3. Kattintson az OK gombra.
      Az Order_Details (Rendelés_részletei) tábla csatolásának bővítése

      Megjegyzés

      A Power Query szolgáltatásban kibonthatja az oszlopokhoz csatolt táblákat, és összesítheti a csatolt tábla oszlopait, mielőtt kibővítené a főtábla adatait. Az összesítő műveletek elvégzésének módjáról az Egy oszlop adatainak összesítése című témakörből tájékozódhat.

3. lépés: A többi oszlop eltávolítása, hogy csak a kívánt oszlopok maradjanak meg

Ebben a lépésben eltávolítja az összes oszlopot, kivéve a következőket: OrderDate (RendelésDátuma), ProductID (Termékazonosító), UnitPrice (Egységár) és Quantity (Mennyiség). 

  1. Az Adatok előnézetében válassza ki az alábbi oszlopokat:

    1. Jelölje ki az első oszlopot (OrderID).
    2. Shift+Kattintson az utolsó oszlopra, Szállító.
    3. A Ctrl billentyűt nyomva tartva kattintson az OrderDate (RendelésDátuma), Order_Details.ProductID (Rendelés_részletei.Termékazonosító), Order_Details.UnitPrice (Rendelés_részletei.Egységár) és Order_Details.Quantity (Rendelés_részletei.Mennyiség) oszlopra.
  2. Kattintson a jobb gombbal egy kijelölt oszlop fejlécére, és válassza a További oszlopok eltávolítása parancsot.

4. lépés: A sor végösszegének kiszámítása minden Order_Details sorhoz

Ebben a lépésben létrehoz egy egyéni oszlopot, hogy kiszámítsa a sor végösszegét minden Order_Details sorhoz.

  1. Az Adatok előnézetében válassza a villámnézet bal felső sarkában lévő táblaikont (Táblázat ikon).
  2. Kattintson az Egyéni oszlop hozzáadása elemre.
  3. Az Egyéni oszlop párbeszédpanel Egyéni oszlop képletmezőjébe írja be a következőt: [Order_Details.Egységár] * [Order_Details.Mennyiség].
  4. Az Új oszlop neve mezőbe írja be a Line Total (Sor végösszege) kifejezést.
  5. Kattintson az OK gombra.

Sor végösszegének kiszámítása minden Order_Details (Rendelés_részletei) sorhoz

5. lépés: Egy OrderDate (RendelésDátuma) évoszlop átalakítása

Ebben a lépésben az OrderDate (RendelésDátuma) oszlopot fogja átalakítani a rendelés évének megjelenítésére.

  1. Az Adatok előnézete ablakban kattintson a jobb gombbal az OrderDate oszlopra, és válassza az Év átalakítása> parancsot.

  2. Nevezze át az OrderDate oszlopot Year (Év) oszlopra:

    1. Kattintson duplán az OrderDate oszlopra, és írja be a Year nevet, vagy
    2. Right-Click az OrderDate (RendelésDátuma) oszlopban válassza az Átnevezés lehetőséget, és írja be a Year (Év) szót.

6. lépés: Sorok csoportosítása ProductID (Termékazonosító) és Year (Év) szerint

  1. Az Adatok előnézetében válassza az Év és a Order_Details.Termékkód elemet.

  2. Right-Click az egyik fejlécre, és válassza a Csoportosítás lehetőséget.

  3. A Csoportosítási szempont párbeszédpanelen tegye a következőket:

    1. Az Új oszlop neve mezőbe írja be a Total Sales (Összes eladás) címet.
    2. A Művelet legördülő listában válassza ki az Összeg elemet.
    3. Az Oszlop legördülő listában válassza a Line Total (Sor végösszege) elemet.
  4. Kattintson az OK gombra.
    Csoportosítási szempont párbeszédpanel összesítő műveletekhez

7. lépés: Lekérdezés átnevezése

Mielőtt az értékesítési adatokat importálja az Excelbe, nevezze át a lekérdezést:

  • A Lekérdezés beállításai ablaktábla Név mezőjébe írja be a Total Sales (Összes eladás) kifejezést.

Eredmények: A 2. feladat végső lekérdezése

Minden egyes lépés végrehajtása után lesz egy Total Sales (Összes eladás) lekérdezése a Northwind OData-adatcsatornán.

Teljes értékesítés

Összegzés: A Power Query 2. feladatban létrehozott lépései

Amikor lekérdezési műveleteket végez a Power Query szolgáltatásban, a lekérdezés lépései létrejönnek, és megjelennek a Lekérdezés beállításai ablaktáblában, az Alkalmazott lépések listában. Mindegyik lekérdezéslépéshez tartozik egy Power Query-képlet vagy más néven „M” nyelv. A Power Query-képletekről bővebben a "További tudnivalók a Power Query-képletekről" című témakörben olvashat.

Művelet Lekérdezési lépés Képlet
Csatlakozás OData-adatcsatornához Forrás = OData.Feed("http://services.odata.org/Northwind/Northwind.svc", null, [Implementation="2.0"])
Tábla választása Navigáció = Source{[Name="Orders"]}[Data]
Az Order_Details (Rendelés_részletei) tábla bővítése Expand Order_Details (Order_Details bővítése) = Table.ExpandTableColumn(Orders, "Order_Details", {"ProductID", "UnitPrice", "Quantity"}, {"Order_Details.ProductID", "Order_Details.UnitPrice", "Order_Details.Quantity"})
A többi oszlop eltávolítása, hogy csak a szükségesek maradjanak meg RemovedColumns = Table.RemoveColumns(#"Expand Order_Details",{"OrderID", "CustomerID", "EmployeeID", "RequiredDate", "ShippedDate", "ShipVia", "Freight", "ShipName", "ShipAddress", "ShipCity", "ShipRegion", "ShipPostalCode", "ShipCountry", "Customer", "Employee", "Shipper"})
Sor végösszegének kiszámítása minden Order_Details (Rendelés_részletei) sorhoz Egyéni hozzáadva = Table.AddColumn(RemovedColumns, "Custom", each [Order_Details.UnitPrice] * [Order_Details.Quantity])
= Table.AddColumn(#"Expanded Order_Details", "Line Total", each [Order_Details.UnitPrice] * [Order_Details.Quantity])
Módosítsa a nevet egy kifejezőbb névre, Lne Total Átnevezett oszlopok = Table.RenameColumns(InsertedCustom;{{"Custom"; "Line Total"}})
Az OrderDate (RendelésDátuma) oszlop átalakítása az év megjelenítéséhez Kinyert év = Table.TransformColumns(#"Csoportosított sorok",{{"Year"; Date.Year, Int64.Type}})
Váltás erre:
kifejezőbb neveket – RendelésDátuma és Év mező
1. oszlop átnevezése Table.RenameColumns
(TransformedColumn;{{"OrderDate"; "Year"}})
Sorok csoportosítása termékazonosító és év szerint GroupedRows = Table.Group(RenamedColumns1, {"Year", "Order_Details.ProductID"}, {{"Total Sales", each List.Sum([Line Total]), type number}})

3. feladat: A Products (Termékek) és a Total Sales (Összes eladás) lekérdezés kombinálása

A Power Query lehetővé teszi több lekérdezés kombinálását azok egyesítésével vagy összefűzésével. Az Egyesítés művelet bármely táblázatos formátumú Power Query-lekérdezésen elvégezhető, függetlenül attól, hogy az adatok milyen adatforrásból származnak. Az adatforrások kombinálásáról a Több lekérdezés kombinálása című témakörből tudhat meg többet.

Ebben a feladatban egyesíti a Products (Termékek) és a Total Sales (Összes eladás) lekérdezést egy egyesítő lekérdezés és a Kibontás művelet használatával, majd betölti a Total Sales per Product (Összes eladás termékenként) lekérdezést az Excel adatmodelljébe.

1. lépés: A ProductID (Termékazonosító) oszlop egyesítése egy Total Sales (Összes eladás) lekérdezésbe

  1. Az Excel-munkafüzetben keresse meg a Termékek munkalapon a Termékek lekérdezést.

  2. Jelöljön ki egy cellát a lekérdezésben, majd válassza a Lekérdezés>egyesítése lehetőséget.

  3. Az Egyesítés párbeszédpanelen jelölje ki a Termékek elemet elsődleges táblaként, és válassza a Total Sales (Összes eladás) elemet másodlagos vagy kapcsolódó egyesítendő lekérdezésként. A Total Sales egy új strukturált oszlop lesz, amely egy kibontó ikonnal rendelkezik.

  4. A Total Sales (Összes eladás) és a Products (Termékek) tábla ProductID (Termékazonosító) szerinti összekapcsolásához jelölje ki a ProductID oszlopot a Products táblában, és az Order_Details.ProductID (Rendelés_részletei.Termékazonosító) oszlopot a Total Sales táblában.

  5. Az Adatvédelmi szintek párbeszédpanelen tegye a következőket:

    1. Válassza a Szervezeti értéket adatvédelmi szintként mindkét adatforráshoz.
    2. Válassza a Save (Mentés) lehetőséget.
  6. Kattintson az OK gombra.

    Megjegyzés

    Az Adatvédelmi szintek beállítás megakadályozza, hogy a felhasználók véletlenül olyan adatforrásokból kombináljanak adatokat, amelyek személyes vagy szervezeti források lehetnek. A lekérdezéstől függően a felhasználó véletlenül adatokat küldhet a privát adatforrásból egy másik adatforrásba, amely esetleg rossz szándékkal készült. A Power Query elemzi az összes adatforrást, és besorolja azokat a definiált adatvédelmi szintekre: Nyilvános, Szervezeti és Titkos. Az adatvédelmi szintekről az Adatvédelmi szintek beállítása című témakörben talál további információt.

    Az Egyesítés párbeszédpanel

Eredmény

Az egyesítési művelet lekérdezést hoz létre. A lekérdezés eredménye tartalmazza az elsődleges tábla (Termékek) összes oszlopát, valamint egy strukturált oszlopot a kapcsolódó táblába (Total Sales). Válassza a Kibontás ikont, ha új oszlopokat szeretne felvenni az elsődleges táblába a másodlagos vagy kapcsolódó táblából.

Végleges egyesítés

2. lépés: Egyesített oszlop bővítése

Ebben a lépésben kibővíti az egyesített oszlopot a ÚjOszlop névvel, hogy két új oszlopot hozzon létre a Termékek lekérdezésben: Év és Összes eladás.

  1. Az Adatok előnézetében válassza a Kibontás ikon (Kibontás) lehetőséget a NewColumn elem mellett.

  2. A Kibontás legördülő listában:

    1. Válassza a (Válassza ki az összes oszlopot) lehetőséget az összes oszlop törléséhez.
    2. Válassza ki az Év és a Teljes értékesítés mezőt.
    3. Kattintson az OK gombra.
  3. Nevezze át a két oszlopot, adja nekik a Year és a Total Sales nevet.

  4. Ha meg szeretné tudni, hogy mely termékek és mely években érték el a legnagyobb forgalmat, válassza a Csökkenő rendezés az összes eladás szerint lehetőséget.

  5. Az Átnevezés paranccsal nevezze át a lekérdezést Total Sales per Product (Összes eladás termékenként) névre.

Eredmény

Táblacsatolás bővítése

3. lépés: Total Sales per Product (Összes eladás termékenként) lekérdezés betöltése egy Excel-adatmodellbe

Ebben a lépésben egy lekérdezést tölt be egy Excel-adatmodellbe, hogy a lekérdezés eredményéhez kapcsolt jelentést hozzon létre. Miután betöltötte az adatokat az Excel-adatmodellbe, a Power Pivottal tovább folytathatja az adatelemzést.

  1. Válassza a Kezdőlap>, Bezárás & Betöltés lehetőséget.
  2. Az Adatimportálás párbeszédpanelen válassza az Adatok felvétele az adatmodellbe lehetőséget. A párbeszédpanel használatáról a kérdőjelre (?) kattintva tájékozódhat.

Eredmény

Total Sales per Product (Összes eladás termékenként ) lekérdezése van, amely a Products.xlsx fájl és a Northwind OData-adatcsatorna adatait kombinálja. Ez a lekérdezés egy Power Pivot-modellre vonatkozik. A lekérdezés módosításai az adatmodellben létrejövő táblát is módosítják és frissítik.

Összegzés: A 3. feladatban létrehozott Power Query-lépések

Amikor egyesítő lekérdezési műveleteket végez a Power Query alkalmazásban, a lekérdezés lépései létrejönnek, és megjelennek a Lekérdezés beállításai ablaktáblában, az Alkalmazott lépések listában. Mindegyik lekérdezéslépéshez tartozik egy Power Query-képlet vagy más néven „M” nyelv. A Power Query-képletekről bővebben a "További tudnivalók a Power Query-képletekről" című témakörben olvashat.

Művelet Lekérdezési lépés Képlet
A ProductID (Termékazonosító) oszlop egyesítése egy Total Sales (Összes eladás) lekérdezésbe Forrás (az Egyesítés művelet adatforrása) = Table.NestedJoin(Products; {"ProductID"}; #"Total Sales"; {"Order_Details.ProductID"}; "Total Sales"; JoinKind.LeftOuter)
Egyesített oszlop bővítése Expanded Total Sales = Table.ExpandTableColumn(Source, "Total Sales", {"Year", "Total Sales"}, {"Total Sales.Year", "Total Sales.Total Sales"})
Két oszlop átnevezése Átnevezett oszlopok = Table.RenameColumns(#"Expanded Total Sales",{{"Total Sales.Year"; "Year"}; {"Total Sales.Total Sales"; "Total Sales"}})
Összes eladás rendezése növekvő sorrendben Rendezett sorok = Table.Sort(#"Átnevezett oszlopok",{{"Total Sales"; Order.Ascending}})

Lásd még

Excelhez készült Microsoft Power Query – súgó