Reporting Foundation を使用する
Reporting クライアントの使用方法について説明します
前述の手順でインストールを実行すると、Reporting クライアントの使用準備が整います。
Reporting クライアントは Sitecore IoC Container に登録されており、Sitecore DI を使用している場合、IReportingClient をサービスに依存関係として追加できます。
または、ServiceLocator Sitecore.DependencyInjection を介して解決します。
Sitecore.DependencyInjection.ServiceLocator.ServiceProvider.GetService<IReportingClient>();
データをクエリーするには、メソッド GetFactAsync<TFact>(Action<IFactQueryOptionsBuilder>TFact>> ビルダー) を使用できます。このメソッドは、クエリーを構築する代理を受け入れます。以下の例を参照してください。
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); });
備考:
Reporting クライアントのメソッドは非同期です。
クエリー ビルダーは、クエリーを構築する代理のパラメーターを受け入れます。
データのクエリー先 (つまり、SQL オブジェクトがあるデータベース) の接続文字列の名前 (Reporting など) を渡す必要があります。
QueryFrom…To は、ファクト オブジェクトの DateTime フィールドに基づいてデータをフィルタリングします。
ExpandDimension では、結果にディメンションが含まれます。
FilterWithKey は、ディメンションの DimensionKey に基づいて結果をフィルタリングします。
注記
クエリーには、少なくとも 1 つのフィルター (ディメンションまたは日時) と接続文字列の名前が含まれている必要があります。含まれていない場合は、ValidationException がスローされます。
ファクトのクエリーと同様に、ファクトの削除にも同じフィルターがあります。以下の例を参照してください。
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)