# 5.3 अनेक pages आणूया: pagination

Source: https://ravindrabagale.com/mr/powerbi/ch05-web-data-apis-and-google-sheets/5-3-many-pages-pagination-with-a-parameter-and-a.html
Language: mr (Marathi with English technical terms)

काही websites किंवा APIs data page=1, page=2 अशा भागांत देतात. आधी एका page ची query तयार करा, तिचं function करा आणि page numbers च्या list साठी ते चालवा. खाली example.com हा काल्पनिक source आहे.

Page 1 ची query तयार करून data clean करा.

Home › Manage Parameters › New Parameter मध्ये PageNo, Decimal Number, Current Value 1 द्या.

Advanced Editor मध्ये hard-coded page number ऐवजी parameter वापरा.

Queries pane मध्ये right-click › Create Function… › fnGetStoresPage नाव द्या. Linked query बदलली तर function सुद्धा update होतं.

New Source › Blank Query मध्ये = {1..5} द्या. To Table करून column Page नावाने Whole Number ठेवा.

Add Column › Invoke Custom Function मध्ये fnGetStoresPage आणि PageNo साठी Page column निवडा.

नव्या table column चं expand icon वापरून fields उघडा.

// fnGetStoresPage
(PageNo as number) as table =>
let
    Source = Web.Contents("https://example.com",
                [RelativePath = "darkstores", Query = [page = Text.From(PageNo)]]),
    Page   = Html.Table(Text.FromBinary(Source), {{"Store", ".store-name"}, {"City", ".store-city"}},
                [RowSelector = ".store-card"])
in
    Page

Service refresh साठी base URL स्थिर ठेवा

पूर्ण URL concatenate करण्याऐवजी Web.Contents("https://example.com", [RelativePath = …, Query = […]]) वापरा. Service ला source validate करता येणं आवश्यक असतं; dynamic data source error येऊ शकतो.

Practice

आधी pages 1–3 आणा. मग शेवटचा page number MaxPage parameter मध्ये ठेवा आणि {1..MaxPage} वापरा. API total page count देत असेल तर त्यावरून list ठरवता येते.

रवींद्र बागले यांची tip

फक्त कायमचे page numbers लिहिले तर नवीन pages मिळणार नाहीत. आधी दोन-तीन pages वर चाचणी करा. Source च्या rate limits नुसार requests कमी ठेवा किंवा योग्य delay द्या.
