DataFinderにおける検索操作をスクリプト化する

更新しました Feb 5, 2021

環境

ソフトウェア

  • DIAdem
  • DataFinder Server

計測データの特定のチャンネル、プロパティについて検索を行いたい場合、これらの検索項目とデータの相互関係についてDataFinderによるデータベース化を行う事で検索可能となります。ここでは複数のデータの中から特定のチャンネル名、プロパティを持つデータを検索する操作を確認し、この検索操作をスクリプト化する方法を確認します。

DataFinderでデータを検索する

DIAdemを起動し、NAVIGATOR画面を開きます。DataFinderの基本的な使用方法はこちらで確認できます。まず、上級検索に下記の画像の条件を入力します。C1の値については使用しているDIAdemバージョンに応じてフォルダパスを変更します。
 

上記の条件で検索すると、下記3点をすべて満たすファイルが表示されます。
  • 「ファイル」のプロパティの「フォルダ」がC:\Users\Public\Documents\National Instruments\DIAdem 2020\Data
  • 「ファイル」のプロパティの「ファイル名」がTR_*
  • 「グループ」のプロパティの「名前」がQT_32-1_*

検索条件の値の部分で使用されている * はワイルドカードとなっており、TR_*の場合、TR_から始まるすべてのファイル名が対象となります。


 

検索に使用するプロパティを追加する

DataFinderで検索に使用するプロパティは下記の手順で追加する事ができます。ここではtdmファイルのグループのカスタムプロパティのTest~Statusを検索に使用する方法を確認します。カスタムプロパティを検索条件として使用する場合、下記の手順で「カスタムプロパティの最適化」を行います。ここで設定できるプロパティはDataFinderの検索領域に含まれているデータとなります。検索領域にデータを追加する手順はこちらで確認できます。
 

上記の手順でTest~Statusのプロパティを最適化した後、下記の手順で「グループ」のプロパティにTest~Statusが追加されている事を確認します。データ数やプロパティ数が多い場合、プロパティの最適化に時間が掛かる場合があります。Test~Status = Passを条件として追加し、検索を行うと条件を満たすデータのみ表示されます。
 


 

検索操作をスクリプト化する

検索操作をスクリプトするには検索条件の一部を選択し、Ctrl + Shift + Cを押す事でクリップボードにスクリプトが張り付けられます。このスクリプトはDIAdem SCRIPTやテキストエディタなどでCtrl + Vもしくは右クリックメニューの貼り付けを行う事で確認できます。



例えば上記の赤枠の部分をクリックした後、Ctrl + Shift + Cを押すと、データ検索のスクリプトが作成されます。一方、青枠の部分をクリックした後、Ctrl + Shift + Cを押すと、検索された結果のデータをData Portalにロードするスクリプトが作成されます。

今回の例の場合、データ検索のスクリプト(赤枠の部分)は下記の様になります。
 
Dim oMyDataFinder, oMyConditions, oMyResults
 
'--- Search with GUI
Dim oMyQueryForm
set oMyDataFinder = Navigator.Display.CurrDataFinder
Set oMyQueryForm  = oMyDataFinder.QueryForm
Call oMyQueryForm.Clear()
oMyQueryForm.Mode        = eAdvancedQueryForm
oMyQueryForm.ReturnType  = eSearchChannelGroup
oMyQueryForm.ResultsMode = eResultsModeElements
Set oMyConditions = oMyQueryForm.Conditions
 
'--- Search without GUI
'Dim oMyQuery
'Set oMyDataFinder = Navigator.ConnectDataFinder("My DataFinder")
'Set oMyQuery = oMyDataFinder.CreateQuery(eAdvancedQuery)
'oMyQuery.ReturnType = eSearchChannelGroup
'Set oMyConditions = oMyQuery.Conditions
 
'--- Fill the query
Call oMyConditions.Add(eSearchFile,"folder","=","C:\Users\Public\Documents\National Instruments\DIAdem 2020\Data*")
Call oMyConditions.Add(eSearchFile,"fileName","=","TR_*")
Call oMyConditions.Add(eSearchChannelGroup,"name","=","QT_32-1_*")
Call oMyConditions.Add(eSearchChannelGroup,"Test~Status","=","pass")
oMyConditions.Logic = "C1 AND C2 AND C3 AND C4"
 
 
'--- Search with GUI
oMyDataFinder.ResultsList.Settings.MaxCount = 20000
Call oMyQueryForm.Search()
Set oMyResults = oMyDataFinder.ResultsList.ResultsElements
 
'--- Search without GUI
'Call oMyDataFinder.SearchElements(oMyQuery, 20000)
'Set oMyResults = oMyDataFinder.ResultsElements

検索結果をロードするスクリプト(青枠部分)は下記の様になります。
'--- Load the current selection with DataFinder-Elements
Dim oMySelection
Set oMySelection = Navigator.Display.CurrDataFinder.ResultsList.ElementsSelection

Dim oLoadedData
set oLoadedData = Navigator.LoadData(oMySelection)
上記の検索結果をロードする部分のスクリプトはDATANAVIGATORの検索結果の中からクリックで選択しているデータをロードするスクリプトとなっています。その為、検索された結果から特定のデータをロードする必要がある場合、例えば下記の様にデータを指定します。
Dim oMySelection
Set oMySelection = Navigator.Display.CurrDataFinder.ResultsList.Elements(1)

Dim oLoadedData
set oLoadedData = Navigator.LoadData(oMySelection)
赤枠部分から作成した検索のスクリプトの後、上記のデータロードのスクリプトを実行すると、データの検索とデータのロードをスクリプト化する事ができます。