2016-04-05 12 views
0

消費者ライセンスを持つ人々が何らかの(基本的な)分析を行うことができる視覚化を作成しようとしています。彼らは、データのサブセットでデータ選択を実行し、サブセットごとに1つのデータポイントを選択し、選択されたすべてのデータポイントを一緒に分析する必要があります。これはタグを使用すると簡単ですが、残念ながらコンシューマーライセンスはタグの編集をサポートしていませんが、回避策はありますか?Spotfireコンシューマーストア選択

長い物語:私たちは、試験データと連携

は、1つのデータセットは、それぞれが5-50の評価を持って、10-200試験が含まれているため、評価の非常に長いリストがあります。アナリストのライセンスを使用する現在の方法は、各試行をフィルタリングして(これは最善の評価を選択するために必要です)、最良の評価にタグを付け、試行からフィルタを削除し、タグ付き評価をフィルタリングして分析を実行することです。

私たちの回避策にタグを付けないで、各試行ごとにフィルターをかけ、最良の評価を選択し、紙にIDを書き留めます(!)、試行のフィルタを削除してから、評価リストをスクロールし、紙に書かれている。余分な作業が多いだけでなく、選択中に誤ってCTRLボタンを放して選択をキャンセルする大きなリスクがあります。

このプロセスを改善する方法はありますか?

私が正しくあなたの状況を理解してると仮定すると、(私はTibcoのコミュニティサイトでもsame questionを求めてきましたが、コミュニティが存在し、実際にアクティブではないようだ)

答えて

1

、これが私の提案のようになります。

「Append」と表示されたボタン、入力フィールド(複数行)、およびRefresh/Continueボタンの付いたテキスト領域があります。

は、ユーザー、裁判を見つけ、選択的評価をマークして、追加ボタンを押し、次のようなスクリプトにするには、下のフィルタを持っている:

from Spotfire.Dxp.Data import * 

crossSource = Document.Data.Tables["TrialsAndAssessments"] 

rowIndexSet=Document.ActiveMarkingSelectionReference.GetSelection(crossSource).AsIndexSet() 
colCurs = DataValueCursor.CreateFormatted(crossSource.Columns["AssessmentID"]) 


x = Document.Properties["udPreSelectedAssessments"] 
#x = "" 
if rowIndexSet.IsEmpty != True: 
    for row in crossSource.GetRows(rowIndexSet, colCurs): 
     #print colCurs.CurrentValue 
     if x == "": 
      x += colCurs.CurrentValue 
     else: 
      x += ", " + colCurs.CurrentValue 

Document.Properties["udPreSelectedAssessments"] = x 

彼らは彼らが望むすべてのアセスメントを追加した後(手動で編集することもできます)このリストでは、ユーザーはRefresh/Continueボタンを押すことができます。このボタンはudSelectedAssessmentsプロパティを変更することができます。情報リンクは、AssessmentID自体のリストを解析するストアドプロシージャとなる、キャッシュではなく自動的に更新するように設定されています。

strVals = Document.Properties["udPreSelectedAssessments"] 

lst = "" 

x = 0 
y = 0 
z = 0 
for letter in strVals: 
    if y == 1: 
     if letter == " ": 
      lst = lst + strVals[x:z] + ", " 
      y = 0 
     elif letter == ",": 
      lst = lst + strVals[x:z] + ", " 
      y = 0 
     elif letter == "\n": 
      lst = lst + strVals[x:z] + ", " 
      y = 0 
     elif letter == "\r": 
      lst = lst + strVals[x:z] + ", " 
      y = 0 
     elif letter == "'": 
      lst = lst + strVals[x:z] + ", " 
      y = 0 
     elif letter == '"': 
      lst = lst + strVals[x:z] + ", " 
      y = 0 
     elif letter == '\t': 
      lst = lst + strVals[x:z] + ", " 
      y = 0 
    else: 
     if letter <> " " and letter <> "," and letter <> "\n" and letter <> "\r" and letter <> "'" and letter <> '"' and letter <> "\t": 
      #print letter 
      x = z 
      y = 1 
    z += 1 
if y == 1: 
    lst = lst + strVals[x:z] 

print lst 

Document.Properties["udSelectedAssessments"] = lst 

シンプルなT-SQL例:

declare @run varchar(max) = ' 
    select * from DataTableName where AssessmentID in (' + @AssessmentList + ')' 

    execute (@run) 
続行/ボタンを

リフレッシュ(あなたがストリップまたはデータベースに何かを渡す前にアポストロフィなどを追加することができ、主にように、私は事前特性を有するお勧めします)

EDIT:これは、データセットが大きいために使用する方法であり、サーバー全体をキャッシュしたり、ユーザーが分析のために過度の時間を待つことを避ける開く。データセットが小さいか、または正しいアセスメントを選択しやすくするために、キャッシング全体をキャッシュしているため、これらのいずれかを心配する必要がない場合は、次の調整をお勧めします。

更新ボタンの上方に設けられたコードにこのコードを追加します。

lst = lst.upper() 
if len(lst) > 0: 
    Document.Properties["udSpecialCheck"] = 0 
    Document.Properties["udSelectedAssessments"] = lst 
else: 
    Document.Properties["udSpecialCheck"] = 1 

は、元のデータセットを使用しますが、次のコードによってデータ表現で可視化を制限:

Upper([Assessment]) in (${udSelectedAssessments) or ${udSpecialCheck} = 1 
+0

感謝をチェルシー!私はまだSpotfireのプログラミングに自信がないので、同僚とあなたのソリューションを試してみる必要があります。必要に応じて質問が返ってきます。 –

関連する問題