Power BI - Co dalšího zákazníci často kupují

Power BI - Co dalšího zákazníci často kupují
Každý, kdo si někdy zakoupil zboží v některém z internetových obchodů si mohl všimnout, že před dokončením objednávky se na stránkách prodejce zobrazí nabídka doplňkového zboží, které si ostatní  zákazníci často nakupují společně s produktem vybraným v nákupním košíku. V tomto příspěvku si ukážeme postup, jak je možné vytvořit v Power BI podobný report,  který bude zobrazovat právě nejčastěji prodávané produkty spolu s vybraným produktem.

Časté společné nákupy produktů

Příklad uvedený v tomto příspěvku je vytvořený ve cvičném Power BI souboru Adventure Works DW 2020.pbix, který je volně dostupný ke stažení na internetu. Soubor s řešením je dostupný ke stažení níže pod tímto příspěvkem. 
V prvním kroku si v použitém modelu vytvoříme dvě nové tabulky. Obě tabulky budou obsahovat jeden sloupec s názvy všech produktů z tabulky 'Product'. První tabulka bude obsahovat produkty představující zakoupený produkt. Ve druhé tabulce budou produkty určené k porovnání. Tabulky si můžeme vytvořit přímo v Power BI, kliknutím na tlačítko "Nová tabulka" na kartě "Modelování". Do DAX editoru následně vložíme níže uvedený výraz pro vytvoření první tabulky.

Počítaná tabulka:

Zakoupený produkt =
SELECTCOLUMNS
(
    'Product',
    "Zakoupený produkt",
    'Product'[Product]
)

Druhá tabulka bude obsahovat stejné hodnoty, tedy názvy všech produktů z tabulky 'Product', pouze tabulku a sloupec pro přehlednost jinak pojmenujeme.

Počítaná tabulka:

Porovnávaný produkt =
SELECTCOLUMNS
(
    'Product',
    "Porovnávaný produkt",
    'Product'[Product]
)

Takto vytvořené tabulky jsou nyní součástí modelu, nicméně nebudou propojeny s ostatními tabulkami pomocí relací.

Power BI - Co dalšího zákazníci často kupují 2

Nyní se můžeme přesunout k samotnému Power BI reportu. Názvy produktů z tabulky 'Zakoupený produkt' vložíme do průřezu. Názvy produktů z tabulky 'Porovnávaný produkt' pak vložíme do řádků tabulky. Výchozí report tak může vypadat následovně. 

Power BI - Co dalšího zákazníci často kupují 3

Vybraný produkt v průřezu zatím nijak neovlivňuje produkty zobrazené ve vizuálu pod průřezem. Hodnoty v obou vizuálech pocházejí z jiných tabulek, které nejsou propojeny pomocí relací. Celá logika bude zachycena v měřítku pomocí DAX výrazu. Výpočet si rozdělíme do jednotlivých dílčích kroků pomocí proměnných. Při použití proměnných sice zabere DAX kód více řádků, nicméně benefitem je přehlednější a výrazně jednodušší výpočet.

Měřítko:

Společné nákupy =
VAR ZakoupenyProdukt =
    SELECTEDVALUE('Zakoupený produkt'[Zakoupený produkt])
VAR PorovnavanyProdukt =
    SELECTEDVALUE('Porovnávaný produkt'[Porovnávaný produkt])
VAR ObjednavkyZakoupenehoProduktu =
    CALCULATETABLE
    (
        VALUES('Sales Order'[Sales Order]),
        'Product'[Product] = ZakoupenyProdukt
    )
VAR SpolecneObjednavky =
   CALCULATETABLE
   (
       VALUES('Sales Order'[Sales Order]),
       ObjednavkyZakoupenehoProduktu,
       'Product'[Product] = PorovnavanyProdukt
   )
VAR PocetObjednavekZakoupenyProdukt =
    SUMX(ObjednavkyZakoupenehoProduktu,1)
VAR PocetSpolecnychObjednavek =
    SUMX(SpolecneObjednavky,1)
VAR ProcentualniPodilSpolecnychObjednavek =
    DIVIDE
    (
        PocetSpolecnychObjednavek,
        PocetObjednavekZakoupenyProdukt
    )
VAR Vysledek =
    IF
    (
        ZakoupenyProdukt <> PorovnavanyProdukt,
        ProcentualniPodilSpolecnychObjednavek
    )
RETURN
   Vysledek

Díky názvům proměnných je DAX kód více méně samo popisný. Důležitou částí výpočtu je volba, co znamená společný nákup produktů. Ve výpočtu použitém v tomto příkladu jsou za společně nakupované produkty považovány ty produkty, které jsou na společných objednávkách, což je možné vidět v proměnné SpolecneObjednavky. Jakmile dokážeme určit počet objednávek vybraného produktu v průřezu a počet objednávek, na kterých jsou jak produkt vybraný v průřezu, tak produkt v aktuálním řádku vizuálu Tabulky, jednoduchým dělením dostaneme procentuální podíl společných nákupů. Nové měřítko si můžeme vložit do připraveného vizuálu tabulky.

Power BI - Co dalšího zákazníci často kupují 4

Na obrázku výše můžeme vidět, že jako zakoupený produkt je v průřezu vybraný produkt s názvem "All-Purpose Bike Stand". V tabulce pod průřezem jsou zobrazené produkty, které jsou s vybraným produktem nakupované nejčastěji, včetně procentuálního podílu společných nákupů ve vztahu ke všem objednávkám vybraného produktu v průřezu. Pomocí filtru vizuálu ještě můžeme omezit počet zobrazených produktů, například na top 5 nejčastěji společně nakupovaných produktů.

Power BI - Co dalšího zákazníci často kupují 5

Ve filtru vizuálu filtrujeme názvy produktů z tabulky 'Porovnávaný produkt'. Jako typ filtru je vybrána možnost "Top N" pro pět nejlepších výsledků podle výsledku měřítka [Společné nákupy]. Po kliknutí na tlačítko "Apply filter" je vizuál tabulka filtrován pouze na pět nejčastěji společně nakupovaných produktů s produktem vybraným v průřezu.

Power BI - Co dalšího zákazníci často kupují 6

Na obrázku výše je v průřezu nad tabulkou vybrán produkt "HL Mountain Rear Wheel", což je náhradní díl pro horské jízdní kolo. Ve výsledné tabulce jsou vidět produkty, které jsou s tímto vybraným zadním náhradním kolem nejčastěji na společných objednávkách. Zvýrazněné produkty jsou horská kola. Pokud si někdo kupuje horské kolo, může si k horskému kolu zakoupit také jako náhradní díl náhradní zadní kolo. Pokud ovšem někdo kupuje zadní náhradní kolo, které je vybrané v průřezu, obvykle již má doma i samotné jízdní kolo, na které náhradní díl kupuje. Výše uvedený pohled na společné nákupy bychom tedy ještě mohli upravit tak, že budeme zobrazovat pouze nejčastěji společně nakupované produkty, které splňují nějakou dodatečnou podmínku. Měřítko [Společné nákupy] můžeme doplnit například o podmínku, kdy k zakoupenému produktu budeme zobrazovat pouze společně nejčastěji nakupované produkty, které jsou levnější než produkt zakoupený.

Měřítko:

Společné nákupy (Pouze levnější produkty) =
VAR ZakoupenyProdukt =
    SELECTEDVALUE('Zakoupený produkt'[Zakoupený produkt])
VAR PorovnavanyProdukt =
    SELECTEDVALUE('Porovnávaný produkt'[Porovnávaný produkt])
VAR ObjednavkyZakoupenehoProduktu =
    CALCULATETABLE
    (
        VALUES('Sales Order'[Sales Order]),
        'Product'[Product] = ZakoupenyProdukt
    )
VAR SpolecneObjednavky =
   CALCULATETABLE
   (
       VALUES('Sales Order'[Sales Order]),
       ObjednavkyZakoupenehoProduktu,
       'Product'[Product] = PorovnavanyProdukt
   )
VAR PocetObjednavekZakoupenyProdukt =
    SUMX(ObjednavkyZakoupenehoProduktu,1)
VAR PocetSpolecnychObjednavek =
    SUMX(SpolecneObjednavky,1)
VAR ProcentualniPodilSpolecnychObjednavek =
    DIVIDE
    (
        PocetSpolecnychObjednavek,
        PocetObjednavekZakoupenyProdukt
    )
VAR CenaVybranyProdukt =
    CALCULATE
    (
        MAX('Product'[List Price]),
        'Product'[Product] = ZakoupenyProdukt
    )
VAR CenaPorovnavanyProdukt =
    CALCULATE
    (
        MAX('Product'[List Price]),
        'Product'[Product] = PorovnavanyProdukt
    )
VAR Vysledek =
    IF
    (
        ZakoupenyProdukt <> PorovnavanyProdukt &&
        CenaVybranyProdukt > CenaPorovnavanyProdukt,
        ProcentualniPodilSpolecnychObjednavek
    )
RETURN
   Vysledek

Cena zakoupeného produktu, tedy produktu vybraného v průřezu, je uložena v proměnné CenaVybranyProdukt. V proměnné CenaPorovnavanyProdukt je pak uložena cena produktů v řádcích tabulky. Podmínka, že porovnávaný produkt musí být levnější než zakoupený produkt je pak přidána do prvního argumentu funkce IF() v proměnné Vysledek. Tato podmínka může být samozřejmě vytvořena jinak, například na cenu produktu v určitém rozmezí ve vztahu k zakoupenému produktu. Pokud nyní použijeme tuto novou  verzi výpočtu, výsledek bude vypadat následovně.

Power BI - Co dalšího zákazníci často kupují 7

Jak je možné vidět na obrázku výše, v zobrazené tabulce s produkty, které jsou nakupované často společně s vybraným produktem, již nejsou dvě jízdní kola, jak tomu bylo u původního výpočtu, ale zobrazené jsou pouze produkty s katalogovou cenou nižší než vybraný produkt v průřezu. Soubor s řešením si můžete stáhnout pod níže uvedeným odkazem. Některé další příklady můžete najít na stránce DAX - příklady.  

Stáhnout soubor s řešením.
č. 62

Komentáře