Aracılığıyla paylaş


Power BI'dan daha fazla veri getirme

fetchMoreData API'si, Power BI görsellerinin 30.000 satır veri görünümünün sabit sınırını aşmasını sağlamanın bir yolu olarak farklı boyutlardaki veri öbeklerini yüklemenizi sağlar. API, istenen tüm öbekleri toplamaya yönelik özgün yaklaşımın yanı sıra artık veri öbeklerinin artımlı olarak yüklenmesini de destekliyor.

Bir kere önceden getirebileceğiniz satır sayısını yapılandırabilir veya rapor yazarının öbek boyutunu dinamik olarak ayarlamasına izin vermek için kullanabilirsiniz dataReductionCustomization .

Not

fetchMoreData API 3.4 ve üzeri sürümlerde kullanılabilir.

Dinamik dataReductionCustomization API 5.2 ve üzeri sürümlerde kullanılabilir.

Hangi sürümü kullandığınızı öğrenmek için pbiviz.json dosyasına bakın.apiVersion

Büyük semantik modellerin kesimli olarak getirilebilmesini sağlama

Gerekli dataViewMappingiçin görselin capabilities.json dosyasında için bir pencere boyutu dataReductionAlgorithm tanımlayın. , count her güncelleştirmede sonuna ekleyebileceğiniz dataview yeni veri satırlarının sayısını sınırlayan pencere boyutunu belirler.

Örneğin, bir kerede 100 veri satırı eklemek için capabilities.json dosyasına aşağıdaki kodu ekleyin:

"dataViewMappings": [
    {
        "table": {
            "rows": {
                "for": {
                    "in": "values"
                },
                "dataReductionAlgorithm": {
                    "window": {
                        "count": 100
                    }
                }
            }
    }
]

Yeni segmentler var olan dataview bölüme eklenir ve görsele çağrı update olarak sağlanır.

Power BI görselinde fetchMoreData kullanma

Power BI'da iki yoldan birini kullanabilirsiniz fetchMoreData :

  • segment toplama modu
  • artımlı güncelleştirmeler modu

Segment toplama modu (varsayılan)

Segment toplama moduyla, görsele sağlanan veri görünümü önceki fetchMoreData requeststüm birikmiş verileri içerir. Bu nedenle, veri görünümü boyutu her güncelleştirmede pencere boyutuna göre büyür. Örneğin, toplam 100.000 satır bekleniyorsa ve pencere boyutu 10.000 olarak ayarlandıysa, ilk güncelleştirme veri görünümü 10.000 satır, ikinci güncelleştirme veri görünümünde 20.000 satır vb. olmalıdır.

ile aggregateSegments = trueçağırarak fetchMoreData segment toplama modunu seçin.

varlığını denetleyerek dataView.metadata.segmentverilerin mevcut olup olmadığını belirleyebilirsiniz:

    public update(options: VisualUpdateOptions) {
        const dataView = options.dataViews[0];
        console.log(dataView.metadata.segment);
        // output: __proto__: Object
    }

Ayrıca, öğesini denetleyerek options.operationKindgüncelleştirmenin ilk güncelleştirme mi yoksa sonraki bir güncelleştirme mi olduğunu kontrol edebilirsiniz. Aşağıdaki kodda, VisualDataChangeOperationKind.Create ilk segmente ve VisualDataChangeOperationKind.Append sonraki segmentlere başvurur.

// CV update implementation
public update(options: VisualUpdateOptions) {
    // indicates this is the first segment of new data.
    if (options.operationKind == VisualDataChangeOperationKind.Create) {

    }

    // on second or subsequent segments:
    if (options.operationKind == VisualDataChangeOperationKind.Append) {

    }

    // complete update implementation
}

Yöntemini ui olay işleyicisinden de çağırabilirsiniz fetchMoreData :

btn_click(){
{
    // check if more data is expected for the current data view
    if (dataView.metadata.segment) {
        // request for more data if available; as a response, Power BI will call update method
        let request_accepted: bool = this.host.fetchMoreData(true);
        // handle rejection
        if (!request_accepted) {
            // for example, when the 100 MB limit has been reached
        }
    }
}

Power BI, yöntemini çağırmaya this.host.fetchMoreData yanıt olarak görselin update yöntemini yeni bir veri kesimiyle çağırır.

Not

İstemci bellek kısıtlamalarını önlemek için Power BI, getirilen veri toplamını 100 MB ile sınırlar. Bu sınıra ulaşıldığında döndürür fetchMoreData() false.

Artımlı güncelleştirmeler modu

Artımlı güncelleştirmeler moduyla, görsele sağlanan veri görünümü yalnızca sonraki artımlı veri kümesini içerir. Veri görünümü boyutu tanımlı pencere boyutuna eşittir (veya son veri biti pencere boyutundan küçükse daha küçüktür). Örneğin, toplam 101.000 satır beklenirse ve pencere boyutu 10.000 olarak ayarlanırsa, görsel 10.000 veri görünümü boyutuna sahip 10 güncelleştirme ve 1.000 veri görünümüne sahip bir güncelleştirme alır.

artımlı güncelleştirmeler modu ile aggregateSegments = falseçağrılarak fetchMoreData seçilir.

varlığını denetleyerek dataView.metadata.segmentverilerin mevcut olup olmadığını belirleyebilirsiniz:

    public update(options: VisualUpdateOptions) {
        const dataView = options.dataViews[0];
        console.log(dataView.metadata.segment);
        // output: __proto__: Object
    }

Ayrıca, öğesini denetleyerek güncelleştirmenin ilk güncelleştirme mi yoksa sonraki bir güncelleştirme mi olduğunu de kontrol options.operationKindedebilirsiniz. Aşağıdaki kodda, VisualDataChangeOperationKind.Create ilk segmente ve VisualDataChangeOperationKind.Segment sonraki segmentlere başvurur.

// CV update implementation
public update(options: VisualUpdateOptions) {
    // indicates this is the first segment of new data.
    if (options.operationKind == VisualDataChangeOperationKind.Create) {

    }

    // on second or subsequent segments:
    if (options.operationKind == VisualDataChangeOperationKind.Segment) {
        
    }

    // skip overlapping rows 
    const rowOffset = (dataView.table['lastMergeIndex'] === undefined) ? 0 : dataView.table['lastMergeIndex'] + 1;

    // Process incoming data
    for (var i = rowOffset; i < dataView.table.rows.length; i++) {
        var val = <number>(dataView.table.rows[i][0]); // Pick first column               
            
     }
     
    // complete update implementation
}

Yöntemini ui olay işleyicisinden de çağırabilirsiniz fetchMoreData :

btn_click(){
{
    // check if more data is expected for the current data view
    if (dataView.metadata.segment) {
        // request for more data if available; as a response, Power BI will call update method
        let request_accepted: bool = this.host.fetchMoreData(false);
        // handle rejection
        if (!request_accepted) {
            // for example, when the 100 MB limit has been reached
        }
    }
}

Power BI, yöntemini çağırmaya this.host.fetchMoreData yanıt olarak görselin update yöntemini yeni bir veri kesimiyle çağırır.

Not

Veri görünümlerinin farklı güncelleştirmelerindeki veriler çoğunlukla özel olsa da, ardışık veri görünümleri arasında bazı çakışmalar vardır.

Tablo ve kategorik veri eşlemesi için, ilk N veri görünümü satırlarının önceki veri görünümünden kopyalanan verileri içermesi beklenebilir.

N şu şekilde belirlenebilir: (dataView.table['lastMergeIndex'] === undefined) ? 0 : dataView.table['lastMergeIndex'] + 1

Görsel, Power BI ile ek iletişimler olmadan verilere erişebilmesi için veri görünümünün bu görünüme geçirilmesini sağlar.

Özelleştirilmiş veri azaltma

Geliştirici her zaman görselin ne tür veriler görüntüleneceğini önceden bilmediğinden, rapor yazarının veri öbek boyutunu dinamik olarak ayarlamasına izin vermek isteyebilir. API sürüm 5.2'den, rapor yazarının her seferinde getirilen veri öbeklerinin boyutunu ayarlamasına izin vekleyebilirsiniz.

Rapor yazarının sayıyı ayarlamasına izin vermek için önce capabilities.json dosyanızda adlı dataReductionCustomization bir özellik bölmesi nesnesi tanımlayın:

    "objects": {
        "dataReductionCustomization": {
            "displayName": "Data Reduction",
            "properties": {
                "rowCount": {
                    "type": {
                        "numeric": true
                    },
                    "displayName": "Row Reduction",
                    "description": "Show Reduction for all row groups",
                    "suppressFormatPainterCopy": true
                },
                "columnCount": {
                    "type": {
                        "numeric": true
                    },
                    "displayName": "Column Reduction",
                    "description": "Show Reduction for all column groups",
                    "suppressFormatPainterCopy": true
                }
            }
        }
    },

Ardından, değerinden dataViewMappingssonra için dataReductionCustomizationvarsayılan değerleri tanımlayın.

   "dataReductionCustomization": {
        "matrix": {
            "rowCount": {
                "propertyIdentifier": {
                    "objectName": "dataReductionCustomization",
                    "propertyName": "rowCount"
                },
                "defaultValue": "100"
            },
            "columnCount": {
                "propertyIdentifier": {
                    "objectName": "dataReductionCustomization",
                    "propertyName": "columnCount"
                },
                "defaultValue": "10"
            }
        }
    }

Veri azaltma bilgileri biçim bölmesindeki görselin altında görünür.

Veri azaltma sayısını ayarlama seçeneğiyle birlikte biçim kaydırma işleminin ekran görüntüsü.

Dikkat edilecekler ve sınırlamalar

  • Pencere boyutu 2-30.000 aralığındadır.

  • Veri görünümü toplam satır sayısı 1.048.576 satırla sınırlıdır.

  • Veri görünümü bellek boyutu, segment toplama modunda 100 MB ile sınırlıdır.