Web Components ピボット グリッドの概要

    Ignite UI for Web Components ピボット グリッドは、クロス集計形式で大量の多次元データを合計して表すために使用されます。データの概要は、簡単かつ迅速にソート、グループ化、またはフィルタリングできます。このようなデータには、合計、平均、およびその他の統計が含まれる場合があります。エンドユーザーは、必要に応じて、ドラッグアンドドロップ操作でピボット テーブルのレイアウトを変更できます。

    Web Components ピボット グリッドとは

    Web Components IgcPivotGrid は、ピボット テーブルにデータを表示し、提供されたデータ セットで複雑な分析を実行するのに役立ちます。この洗練されたピボット グリッド コントロールは、後でクロス集計形式で表示される大量のデータを整理、集計、およびフィルタリングするために使用されます。Web Components ピボット グリッドの主な機能は、行のディメンション、列のディメンション、集計、およびフィルターです。

    IgcPivotGridComponent を使用すると、ユーザーはデータを多次元のピボット テーブル構造で構成および表示できます。行と列は個別のデータ グループを表し、データ セルの値は集計を表します。これにより、単純なフラット データセットに基づく複雑なデータ分析が可能になります。IgcPivotGridComponent は機能豊富なピボット テーブルで、さまざまなディメンションと値を簡単に構成できるだけでなく、フィルタリングやソートなどの追加のデータ操作も提供します。

    Web Components ピボット グリッドの例

    以下は、Web Components ピボット データ セレクター コンポーネントと組み合わせた Web Components ピボット グリッドの例です。このようにして、より柔軟なランタイム構成オプションを使用できます。

    Web Components ピボット グリッドを使用した作業の開始

    Web Components IgcPivotGrid は、pivotConfiguration プロパティを介して構成できます。

    <igc-pivot-grid #grid1 data="data" pivot-configuration="pivotConfigHierarchy">
    </igc-pivot-grid>
    

    これは、rows (行)、columns (列)、values (値) の 3 つの主要なディメンションによって定義されます。rowscolumns は、グリッドの行と列に表示されるグループ化された構造を定義します。values は、グループの関連する値を計算および表示するために使用される集計フィールドと集計を**定義します。

    フィルターは、filters 構成プロパティを介して定義することもできます。ディメンションまたは値として追加したくないが、UI を介して関連するメンバー値をフィルタリングしたいフィールドに使用できます。

    ディメンション構成

    各基本ディメンション構成には、提供されたデータのフィールドに一致する MemberName が必要です。

    public pivotConfigHierarchy: IgcPivotConfiguration = {
        rows: [
            new IgcPivotDateDimension({ memberName: 'Date', enabled: true });
        ]
    }
    

    また、階層の特定の部分を有効または無効にするために、2 番目のオプション パラメーターを介してさらにカスタマイズすることもできます。例えば:

     new IgcPivotDateDimension({ memberName: 'Date', enabled: true }, {
        total: true,
        years: true,
        months: true,
        fullDate: true,
        quarters: false
    });
    

    値の構成

    値の構成には、提供されたデータのフィールドに一致するメンバーが必要です。または、より複雑なカスタム シナリオ用にカスタム aggregator 関数を定義できます。データ フィールドのデータ型に応じて使用できる 4 つの事前定義された集計があります:

    • PivotNumericAggregate - 数値フィールド用。 次の集計関数が含まれています: SUMAVGMINMAXCOUNT
    • PivotDateAggregate - 日付フィールド用。 次の集計関数が含まれています: LATESTEARLIESTCOUNT
    • PivotTimeAggregate - 時間フィールド用。 次の集計関数が含まれています: LATESTEARLIESTCOUNT
    • PivotAggregate - その他のデータ型用。これが基本集計です。 次の集計関数が含まれています: COUNT

    現在の集計関数は、バリューチップのドロップダウンを使用して実行時に変更できます。デフォルトでは、フィールドのデータ型に基づいて使用可能な集計のリストが表示されます。集計のカスタム リストは、AggregateList プロパティを介して設定することもできます。例えば:

    public pivotConfigHierarchy: IgcPivotConfiguration = {
        values: [
            {
                member: 'AmountOfSale',
                displayName: 'Amount of Sale',
                aggregate: {
                    key: 'SUM',
                    aggregator: IgxTotalSaleAggregate.totalSale,
                    label: 'Sum of Sale'
                },
                aggregateList: [{
                    key: 'SUM',
                    aggregator: IgxTotalSaleAggregate.totalSale,
                    label: 'Sum of Sale'
                }, {
                    key: 'MIN',
                    aggregator: IgxTotalSaleAggregate.totalMin,
                    label: 'Minimum of Sale'
                }, {
                    key: 'MAX',
                    aggregator: IgxTotalSaleAggregate.totalMax,
                    label: 'Maximum of Sale'
                }]
            }
        ]
    }
    
    public static totalSale: PivotAggregation = (members, data: any) =>
        data.reduce((accumulator, value) => accumulator + value.UnitPrice * value.UnitsSold, 0);
    
    public static totalMin: PivotAggregation = (members, data: any) => {
        return data.map(x => x.UnitPrice * x.UnitsSold).reduce((a, b) => Math.min(a, b));
    };
    
    public static totalMax: PivotAggregation = (members, data: any) => {
        return data.map(x => x.UnitPrice * x.UnitsSold).reduce((a, b) => Math.max(a,b));
    };
    

    ピボット値は DisplayName プロパティも提供します。この値のカスタム名を列ヘッダーに表示するために使用できます。

    プロパティを有効にする

    pivotConfiguration は、IgcPivotGridComponent コンポーネントの現在の状態を記述するインターフェースです。これを使用すると、開発者はデータのフィールドを rowscolumnsfilters または values (行、列、フィルター、値) として宣言できます。この構成では、これらの各要素を個別に有効または無効にすることができます。ピボット グリッドの現在の状態には、有効な要素のみが含まれます。IgcPivotDataSelectorComponent コンポーネントは同じ構成を利用し、すべての有効と無効の要素のリストを表示します。それぞれについて、適切な状態のチェックボックスがあります。エンドユーザーは、これらのチェックボックスを使用してさまざまな要素を切り替えることにより、ピボット状態を簡単に調整できます。 Enable プロパティは、特定の IgcPivotDimension または IgcPivotValue がアクティブであり、ピボット グリッドによって描画されるピボット ビューに参加するかどうかを制御します。

    完全な構成のコード

    基本的なピボット構成を見てみましょう:

          public pivotConfigHierarchy: IgcPivotConfiguration = {
            columns: [
                {
    
                    memberName: 'Product',
                    memberFunction: (data) => data.Product.Name,
                    enabled: true
                }
    
            ],
            rows: [
                {
                    memberName: 'Seller',
                    memberFunction: (data) => data.Seller.Name,
                    enabled: true,
                }
            ],
            values: [
                {
                    member: 'NumberOfUnits',
                    aggregate: {
                        aggregator: IgxPivotNumericAggregate.sum,
                        key: 'sum',
                        label: 'Sum'
                    },
                    enabled: true
    
                }
            ]
        };
    

    この構成では、各ディメンション グループの値を合計する 1 行、1 列、および 1 つの集計が定義されます。 メンバーは、提供されたデータ ソースで使用可能なフィールドと一致します。

    public data = [
    [
        {
            Product: {
                Name: 'Clothing',
                UnitPrice: '12.814860936633712'
            },
            Seller: {
                Name: 'Stanley Brooker',
                City: 'Seattle'
            },
            Date: '2007-01-01T00:00:00',
            Value: '94.2652032683907',
            NumberOfUnits: '282'
        },
    ];
    
    public PivotSalesData()
    {
        this.Add(new PivotSalesDataItem()
        {
            Country = @"UK",
            Product = @"Vermont",
            UnitsSold = @"501",
            ManufacturingPrice = 15,
            SalePrice = 23,
            GrossSales = 26440,
            Discounts = double.NaN,
            Sales = 26440,
            COGS = 16185,
            Profit = 11255,
            Date = @"1/1/20",
            MonthName = @"January",
            Year = @"2020"
        });
    

    完全な構成の例

    上記のコードを使用すると、Product (製品) カテゴリの一意の列、Sellers Countries (売り手の国) を一意の行にグループ化し、関連するセルのユニット数に関連する集計を表示する次の例が得られます。

    既知の問題と制限

    制限 説明
    列を宣言的に設定することはサポートされていません。 ピボット グリッドは columns (列) の構成に基づいて列を生成するため、ベース グリッドのように宣言的に設定することはサポートされていません。このような列は無視されます。
    ディメンション / 値に重複した MemberName または member プロパティ値を設定します。 これらのプロパティは、各ディメンション / 値に対して一意である必要があります。複製すると、最終結果からデータが失われる可能性があります。
    行選択は、Single (単一) モードでのみサポートされます。 現在、複数選択はサポートされていません。

    API リファレンス

    その他のリソース

    コミュニティに参加して新しいアイデアをご提案ください。