簡體   English   中英

通過Spotfire中的單個IronPython腳本加載順序和同時數據表

[英]Sequential and Simultaneous data table loading via single IronPython script in Spotfire

我需要幫助實現線程標題中描述的任務。 讓我提供一些背景知識:

我在spotfire上開發了一個非常大的儀表板,可以加載大量可視化數據。 其中一些表需要按順序加載,因為它們之間存在依賴關系,但其他表只能同時加載。

對於順序加載的表,我使用以下腳本:

import clr
from System.Collections.Generic import List, Dictionary
from Spotfire.Dxp.Data import DataTable
from Spotfire.Dxp.Framework.ApplicationModel import NotificationService

# Empty list to hold DataTables
Tbls = List[DataTable]()

Tbls.Add(dt1) #dt1 a DataTable string parameter 
Tbls.Add(dt2) #dt2 a DataTable string parameter 

# Notification service
notify = Application.GetService[NotificationService]();

# Execute something after tables are loaded
def afterLoad(exception, Document=Document, notify=notify):
 if not exception:
  Document.Properties["lastReload"]
  print "OK"
 else:
  notify.AddErrorNotification("Error refreshing table(s)","Error details",str(exception))

# Refresh table(s)
Document.Data.Tables.RefreshAsync(Tbls, afterLoad)***

對於沒有依賴性的表,我使用了以下簡單腳本:

from System.Collections.Generic import List, Dictionary 
from Spotfire.Dxp.Data import DataTable 
from System.Collections import ArrayList

dt3.Refresh()
dt4.Refresh()
dt5.Refresh()

我嘗試簡單地將腳本組合成一個腳本,但結果是所有表都按順序加載。

使用這些腳本中使用的命名,我希望腳本執行如下:

  1. 加載dt1
  2. 等待dt1完全加載
  3. 加載dt2
  4. 等待dt2完全加載
  5. 同時加載dt3,dt4和dt5。

最好的問候,並提前感謝

先生

我不相信可以在Spotfire中同時加載數據表。

通過代碼肯定是不可能的:IronPython運行單線程,雖然理論上可以添加線程,但是你會浪費大量的開發時間來實現,實際上,獲得的收益很少(如果可以的話,可能會獲得大量收益)打包解決方案並將其出售給TIBCO工程公司哈哈)

我還建議允許Spotfire處理使用現有功能加載數據,除非你有一些非常奇怪的情況,在這種情況下你可能需要檢查你的方法,因為你做的遠遠超出了平台的意圖。

無論如何,所有這一切,聽起來你可以從“按需”加載數據中受益,因為在Spotfire中調用了該功能:

當要將數據連接中的信息鏈接或數據表作為新數據表添加到分析中時,您可以選擇一次加載所有數據,或僅按需加載數據。 當您可以訪問大量數據時,您的分析可以從按需加載中受益,但您只需要一次處理數據的某些部分。 設置按需數據表時,您可以根據一個或多個其他數據表指定條件以控制要加載的內容。 您還可以首先讓按需數據表成為分析中的第一個(或唯一)數據表,如果其輸入是由文檔屬性定義的。

使用此功能,您可以在觸發器上加載數據表,例如:

  • 標記變化
  • 過濾變化
  • 滿足自定義表達條件
  • 文件屬性變更

您可以在Spotfire文檔中找到有關按需表的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM