---
title: "報告基盤の利用"
slug: "using-the-reporting-foundation"
abstract: "レポーティングクライアントの使い方を説明します"
---
# 報告基盤の利用

前のステップのインストールを踏んだ後、レポートクライアントを利用できるようになります。

## 報告クライアントの解決

Reporting ClientはSitecore IoCコンテナに登録されています。Sitecore DIを使っている場合は、IReportingClientをサービスに依存関係として追加できます。

またはServiceLocator Sitecoreで解決できます。DependencyInjection:

Sitecore.DependencyInjection.ServiceLocator.ServiceProvider.GetService<IReportingClient>();

## クエリデータ

データをクエリするにはGetFactAsync(Action TFact>> builder)というメソッドを使用できます。このメソッドはクエリを構築するデリゲートを受け入れます。以下に例を示します:

await \_reportingClient.GetFactAsync<ProductSales>(cfg =>
 {
 cfg.UseConnectionStringName("MyConnectionStringName")
 .QueryFrom(DateTime.Now.AddYears(-1))
 .To(DateTime.Now)
 .ExpandDimension(o => o.Country)
 .FilterWithKey("MY")
 .ExpandDimension(o => o.Product);
 });

注記:

-   クライアントのレポーティング方法は非同期です
-   クエリビルダーはクエリを構築するデリゲートというパラメータを受け入れます
-   クエリしたい接続文字列名(例:レポート)を渡す必要があります(例:SQLオブジェクトを持つデータベース)
-   QueryFrom...To は、事実オブジェクト内のDateTimeフィールドに基づいてデータをフィルタリングします。
-   ExpandDimensionは結果に次元を含めます
-   FilterWithKeyは、その次元のDimensionKeyに基づいて結果をフィルタリングします

> !注クエリには少なくとも1つのフィルター(次元または日付時刻)と接続文字列名が含まれなければならず、そうでなければValidationExceptionがスローされます。

## データを削除

Querying factsと同様に、Delete Factsも同じフィルターを持っています。以下の例をご覧ください:

await \_reportingClient.DeleteFactsAsync<ProductSales>(cfg =>
 {
 cfg.UseConnectionStringName("MyConnectionStringName")
 .DeleteFrom(DateTime.Now.AddYears(-1))
 .To(DateTime.Now)
 .DeleteThatHasDimension(o => o.Country)
 .WithKey("MY");
 });

注記

-   ビルダー内では同じフィルターが使われています(名前は異なります)。
-   削除クエリビルダーには少なくとも1つのフィルターと接続文字列も含めなければなりません

## データの追加や更新

データの追加や更新には、AddOrUpdate asyncメソッドを使い、接続文字列名とデータのリストを渡します。以下の例を参照してください。

await \_reportingClient.AddOrUpdateAsync(\_connectionStringName, data)