2016-03-30 5 views
1

Ich habe ziemlich viel dafür gesucht und kann keine gute Lösung irgendwo finden, was mir wie ein normales Problem für dieses Produkt scheint.Spotfire: Mit einer Auswahl als Bereich für eine andere Datentabelle

Ich habe eine Datentabelle (im Speicher), die von einer Rollup-Tabelle (nennen Sie es 'Bereiche'). Im Grunde wie folgt:

 
id | name | f1 | f2 | totals 
0 | Channel1 | 450 | 680 |  51 
1 | Channel2 | 890 | 990 | 220 

... und so weiter

der ein Balkendiagramm mit Namen auf der X- und Summen auf dem Y. schafft

Ich habe eine andere Tabelle, die ein externer Link ist zu einem großen (500M + Zeilen) Tisch. Diese Tabelle (nennen Sie sie 'Actuals') hat eine Spalte ('Fc'), die in die F1- und F2-Werte von Ranges passen kann.

Ich muss einen Weg für Spotfire Analyst (v7.x) für Bereiche die Auswahl der das Balkendiagramm verwenden, um diese select-Anweisung auslösen:

SELECT * FROM Actuals WHERE Actuals.Fc between [Ranges].[F1] AND [Ranges].[F2] 

Aber es gibt keine Beziehungen (Fremdschlüssel) zwischen den beiden Datenquellen ist eine im Speicher (Bereiche) und die andere ist dynamisch geladen.

TLDR: Wie verwende ich die ausgewählten Zeilen aus einer Visualisierung als Filterausdruck für die Daten einer anderen Visualisierung?

Antwort

0

Meine Wahl für die Problemumgehung: eine Schaltfläche hinzufügen, die sagt: ‚Load Selected Daten‘

Dies wird den folgenden Code ausführen, das die Werte von F1 und F2 in einer Dokumenteigenschaft gespeichert werden, die Sie anschließend Verwenden Sie diese Option, um Ihre dynamisch geladene Tabelle zu filtern und eine Aktualisierung auszulösen (entweder mit dem Aktualisierungscode oder durch automatisches Laden).

rowIndexSet=Document.ActiveMarkingSelectionReference.GetSelection(Document.Data.Tables["IL_Ranges"]).AsIndexSet() 

if rowIndexSet.IsEmpty != True: 
    Document.Properties["udF1"] = Document.Data.Tables["IL_Ranges"].Columns["F1"].RowValues.GetFormattedValue(rowIndexSet.First) 
    Document.Properties["udF2"] = Document.Data.Tables["IL_Ranges"].Columns["F2"].RowValues.GetFormattedValue(rowIndexSet.First) 

if Document.Data.Tables.Contains("IL_Actuals")==True: 
    myTable=Document.Data.Tables["IL_Actuals"]  
if myTable.IsRefreshable and myTable.NeedsRefresh: 
    myTable.Refresh() 

Dieser arbeitet derzeit davon aus, dass Sie Ihre Benutzer nicht erlaubt, mehrere Bereiche zu einer Zeit, und zeigt einfach die erste ausgewählt anzuzeigen.

Wenn Sie ihnen erlauben möchten, mehrere Bereiche anzuzeigen, können Sie einen Cursor durch Ihre Tabelle IL_Ranges ausführen, um entweder die Min. Und Max. Für jeden Wert zu erhalten und die Actuals zwischen Min und Max zu begrenzen, oder Sie können erstellen eine Zeichenfolge, die im Wesentlichen "Fc zwischen 450 und 680 oder Fc zwischen 890 und 990" sagt, übergibt diese an eine gespeicherte Prozedur als eine Zeichenfolge, die die quasi-dynamische Anweisung ausführt, und ergreift den resultierenden Datensatz.

+0

Chelsea, Danke! das funktioniert, aber gibt es eine Möglichkeit, das Update automatisch zu machen? Wenn der Benutzer auf eine Histogrammleiste klickt (Anzahl der Zeilen zwischen f1 und f2), muss diese Klickaktion mit der oben beschriebenen Schaltflächenskripte übereinstimmen. Grundsätzlich zwingt die Auswahl von etwas in einem Diagramm ein Skript zum Ausführen. – poodull

+0

Ich habe das noch nie persönlich gemacht, aber ich kann mir vorstellen, dass Sie das nachahmen könnten: [link] (http://spotfired.blogspot.com/2015/10/update-doc-property-trigger-ironpython.html) – Chelsea

+0

wow . das scheint sehr aufwendig zu sein. Verfügt Spotfire wirklich nicht über eine Möglichkeit, direkt mit einem Skript zu interagieren? Wie auch immer, ich bin mit deinem ursprünglichen Post wirklich weit gekommen. Ich denke, der Klient muss nur noch auf den verdammten Refresh-Button klicken :) Danke nochmal – poodull

Verwandte Themen