IRVDataSourceProvider DataSourceProvider { get; }
ダッシュボードのデータを (Reveal Server SDK) ロードして処理する前に、ダッシュボードの各視覚化に使用される構成またはデータをオーバーライドできます。
以下は IRevealSdkContext で実装するプロパティの 1 つです。
IRVDataSourceProvider DataSourceProvider { get; }
インターフェイス IRVDataSourceProvider を実装するクラスは、特定の可視化またはダッシュボード フィルターによって使用されるデータソースを置換または変更することができます。
以下は、一般的なユースケースです。
使用するデータベースの名前は、現在のユーザーやアプリが取得する userId、division、company、customer などその他の属性に応じて変更できます。これにより、マルチテナント データベースからデータを取得する単一のダッシュボードを持つことができます。
使用されているテーブルの名前、ロードするファイルのパスなどを変更することができます。ユースケースは上記のものと似ています。
データソースをメモリ内のデータソースに置き換えることができます。Reveal App はインメモリ データソースをサポートしていないため、CSV ファイルを使用してダッシュボードを設計し、このコールバックを使用して CSV データソースをインメモリデータソースに置き換えることができます。このシナリオでは、データは実際にメモリからロードされます (またはカスタムデータローダを使用して)。インメモリ データソースの使用方法の詳細については、インメモリ データのサポートを参照してください。
以下のコードスニペットは、ダッシュボードの可視化のためにデータソースを置き換える方法の例です。 メソッド ChangeVisualizationDataSourceItemAsync は、開かれているすべてのダッシュボードで、すべての可視化に対して呼び出されます。
public class SampleDataSourceProvider : IRVDataSourceProvider
{
public Task<RVDataSourceItem> ChangeDashboardFilterDataSourceItemAsync(string userId, string dashboardId, RVDashboardFilter globalFilter, RVDataSourceItem dataSourceItem)
{
return Task.FromResult<RVDataSourceItem>(null);
}
public Task<RVDataSourceItem> ChangeVisualizationDataSourceItemAsync(
string userId, string dashboardId, RVVisualization visualization,
RVDataSourceItem dataSourceItem)
{
var sqlServerDsi = dataSourceItem as RVSqlServerDataSourceItem;
if (sqlServerDsi != null)
{
// SQL サーバーホストとデータベースの変更
var sqlServerDS = (RVSqlServerDataSource)sqlServerDsi.DataSource;
sqlServerDS.Host = "10.0.0.20";
sqlServerDS.Database = "Adventure Works";
// SQL サーバー テーブル/ビュー
sqlServerDsi.Table = "Employees";
return Task.FromResult((RVDataSourceItem)sqlServerDsi);
}
// データソース アイテムを新しいアイテムと置き換える
if (visualization.Title == "Top Customers")
{
var sqlDs = new RVSqlServerDataSource();
sqlDs.Host = "salesdb.local";
sqlDs.Database = "Sales";
var sqlDsi = new RVSqlServerDataSourceItem(sqlDs);
sqlServerDsi.Table = "Customers";
return Task.FromResult((RVDataSourceItem)sqlServerDsi);
}
}
}
上記の例では、次の 2 つの置換が実行されます。
MS SQL Server データベースを使用するすべてのデータソースは、ハードコードされたサーバー 10.0.0.20、Adventure Works データベース、および Employees テーブルを使用するように変更されます。
注: これは単純化されたシナリオで、同じテーブルからデータを取得するためにすべての可視化を置き換えた場合も、現実のシナリオとしては意味がありません。 実際のアプリケーションでは、userId、dashboardId、データソース自体の値 (サーバー、データベースなど) などの追加情報を使用して新しい値を推測します。
Top Customers というタイトルのすべてのウィジェットは、Customers テーブルを使用して salesdb.local サーバーの Sales データベースからデータを取得する新しい SQL Server データソースに設定されます。
IRVDataSourceProvider を実装することに加えて、それを返すために IRevealSdkContext.DataSourceProvider の実装を変更する必要があります。
IRVDataSourceProvider DataSourceProvider => new SampleDataSourceProvider();