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)