Power BI で CDF データをフィルタリングする
Power BI にフィルターを追加することで、大規模なデータセットを数分や数時間ではなくミリ秒でフィルタリングできます。
Cognite Data Fusion(CDF)プロジェクトには数百万行のデータが含まれることがあり、それらをすべて Power BI にダウンロードするのは効率的でなく、そもそも不可能です。
Power BI で実用的なデータセットを作成するには、フィルタリングが不可欠です。Cognite Power BI Connector は、Cognite OData Service を介して CDF にフィルターをプッシュします。CDF はフィルタリングを実行し、一致する行だけを Power BI に返します。
Power Query Editor でフィルターを追加する
Power BIをCDFに接続します。フィルターを追加する列ヘッダーのドロップダウンボタンを選択します。
テキスト フィルターと目的のフィルター タイプを選択します(たとえば、次の値で始まる)。
行のフィルター ダイアログ ボックスで、列内の行をフィルタリングする条件を指定します。
多くのフィルターを同時に定義する場合は詳細を選択します。または、個別に定義して追加します。
ヒント必ず、最も多くの行をフィルタリングする条件を最初に指定します。
Cognite Power BI Connectorは、フィルタリングのためにクエリをCDFに送信し、Power QueryはCDFから返された結果を表示します。Power Queryは通常、1000 行の結果セットをプレビューします。最終的なフィルタリングは、閉じて適用するを選択したときに実行されます。
CDF リソースタイプのフィルタリングに対応
Cognite Power BI Connector は、Cognite OData Service を介して CDF にフィルターをプッシュしたり、または折りたたんだりできます。フィルタリングを実行できる場所は次のとおりです。
CDF- 最も効果的なフィルタリングです。フィルタリングはCDFが行い、CDFとPower BIの間で不要なデータは転送されません。OData Service-ODataService は、contains
やendswith
のようなCDFが提供していない関数をサポートするために、ローカル フィルタリングを行うことができます。まず、CDFフィルタリングを使用してデータ セットをできるだけ減らします。Power Query-Power Queryは、フィルタリングを行うためにすべてのデータを取得する必要があります。大きなテーブルの場合は、かなりの量のデータが含まれる可能性があります。まず、データセットをできるだけ減らします。
以下のテーブルは、CDF の各リソース タイプでどのようなフィルタリングがサポートされているか、どのフィルタリングが CDF にプッシュダウンされるか、どのフィルタリングが OData Service によってローカルに行われるかを示しています。
定義
プッシュダウン -
ODataService とCDFにプッシュダウンされるフィルター機能。ローカル -
Power BIに結果を返す前に、ODataService によってローカル フィルタリングが実行されます。FilterFunctions -
Contains
、StartsWith
、およびEndsWith
。Comparison -
<
、<=
、>
、>=
、および=
。検索 -
pushdownを行いますが、検索 API を使用し、追加のローカル フィルタリングが必要です。情報検索で返される行の数には限りがあり、一致するすべてのデータを
CDFで受け取れるとは限りません。
Assets
プロパティ | プッシュダウン | ローカル |
---|---|---|
Id | = | = |
ExternalId | =, StartsWith | =, FilterFunctions |
Name | =, Search | =, FilterFunctions |
Description | Search | =, FilterFunctions |
ParentId | = | = |
ParentExternalId | = | = |
DataSetId | = | = |
Source | = | = |
MetaData | = | |
RootId | = | = |
CreatedTime | Comparison | Comparison |
LastUpdatedTime | Comparison | Comparison |
Time series
プロパティ | プッシュダウン | ローカル |
---|---|---|
Id | = | = |
ExternalId | =, StartsWith | =, FilterFunctions |
Name | =, Search | =, FilterFunctions |
Description | Search | =, FilterFunctions |
IsString | = | = |
MetaData | = | |
Unit | = | = |
IsStep | = | = |
AssetId | = | = |
SecurityCategories | ||
DataSetId | = | = |
CreatedTime | Comparison | Comparison |
LastUpdatedTime | Comparison | Comparison |
Data point
プロパティ | プッシュダウン | ローカル |
---|---|---|
Id | = | = |
TimeStamp | Comparison | Comparison |
Events
プロパティ | プッシュダウン | ローカル |
---|---|---|
Id | = | = |
ExternalId | =, StartsWith | FilterFunctions |
Description | Search | =, FilterFunctions |
Source | = | = |
Type | = | = |
SubType | = | = |
MetaData | = | |
DataSetId | = | = |
StartTime | Comparison | Comparison |
EndTime | Comparison | Comparison |
CreatedTime | Comparison | Comparison |
LastUpdatedTime | Comparison | Comparison |
AssetIds | Contains | Contains |
Files
プロパティ | プッシュダウン | ローカル |
---|---|---|
Id | = | = |
ExternalId | =, StartsWith | =, FilterFunctions |
Name | =, Search | =, FilterFunctions |
Source | = | = |
MimeType | = | = |
MetaData | ||
DataSetId | = | = |
SourceCreatedTime | Comparison | Comparison |
SourceModifiedTime | Comparison | Comparison |
CreatedTime | Comparison | Comparison |
LastUpdatedTime | Comparison | Comparison |
UploadedTime | Comparison | Comparison |
Uploaded | = | = |
AssetIds | Contains | Contains |
Sequences
プロパティ | プッシュダウン | ローカル |
---|---|---|
Id | = | = |
ExternalId | =, StartsWith | =, StartsWith |
Name | =, Search | =, FilterFunctions |
Description | =, Search | =, FilterFunctions |
MetaData | ||
AssetId | = | = |
DataSetId | = | = |
CreatedTime | Comparison | Comparison |
LastUpdatedTime | Comparison | Comparison |
Columns |
CDF RAW データベース
プロパティ | プッシュダウン | ローカル |
---|---|---|
Name | = | = |
CDF RAW テーブル
プロパティ | プッシュダウン | ローカル |
---|---|---|
Name | = | = |
CDF RAW 行
プロパティ | プッシュダウン | ローカル |
---|---|---|
Key | = | =, FilterFunction |
LastUpdatedTime | Comparison | Comparison |
カスタム クエリを使用してデータをフィルタリングする
Cognite Power BI connector を使用して、プロパティをフィルタリングするカスタム クエリを作成できます。たとえば、アセットの Metadata
プロパティをフィルタリングする場合:
Power BIで、Power BIのメイン ウィンドウの Get Data を選択し、Cognite Data Fusion コネクタを選択します。プロジェクト名フィールドに、プロジェクト名、リソース、フィルターをこの形式で入力します。
<project-name>/<resource-type>/?$filter=<Filter>
OK を選択し、データを変換するを選択して、クエリのプレビューを開きます。
例
フィルタリングは OData の仕様に従っており、フィルターおよび / または語句を連結することで、複数属性のフィルターを作成することができます。たとえば、等号フィルターは AttributeName eq 'AttributeValue'
という書式を使います。
Name eq '23-TE-96116-04'
メタデータフィルタリング
メタデータの場合、フィルタリングはメタデータオブジェクトの内部にネストされたプロパティに対して実行されます。メタデータ プロパティにフィルターをかけるには、たとえば "MetaData/NestedAttributeName eq 'NestedAttributeValue'
" のような形式でフィルターを作成する必要があります。
MetaData/RES_ID eq '525283'
これは publicdata プロジェクトへのカスタムクエリの例で、Metadata/RES_ID
でフィルタリングしています。
publicdata/Assets/?$filter=MetaData/RES_ID eq '525283'&tenantID=48d5043c-cf70-4c49-881c-c638f5796997
これは Metadata/RES_ID
と Name
に対する AND
フィルターです。
publicdata/Assets/?$filter=MetaData/RES_ID eq '525283' and Name eq '23-TE-96116-04'&tenantID=48d5043c-cf70-4c49-881c-c638f5796997
上記の例では、tenantID=48d5043c-cf70-4c49-881c-c638f5796997
が、publicdata プロジェクトに設定された Azure Active Directory テナントです。
フィルタリングをデバッグするには、どのフィルターが OData サービスにプッシュされたかを確認できるツール(Fiddler など)を使うと便利です。