SPOTFIRE: доступ к именам столбцов после использования $ csearch в OVER - PullRequest
0 голосов
/ 04 мая 2018

Цель состоит в том, чтобы объединить столбцы в динамически изменяемой таблице данных.

Таблица данных (currentOutputTable) создается динамически, когда файл выбирается из раскрывающегося списка в Spotfire. Таблица содержит информацию о различных свойствах (P и T), но номер каждого свойства может меняться в зависимости от читаемого файла.

+------+----+----+-----+----+----+-----+
| Time | P1 | P2 | Pn  | T1 | T2 | Tn  |
+------+----+----+-----+----+----+-----+
|    0 |  0 |  2 | ... | 10 | 15 | ... |
|    1 |  1 |  5 | ... | 12 | 18 | ... |
|    2 |  5 |  5 | ... | 15 | 15 | ... |
|    3 | 10 |  5 | ... | 15 | 20 | ... |
+------+----+----+-----+----+----+-----+

Например, я хотел бы создать гистограмму среднего для каждого свойства P.

Я надеялся, что смогу сделать что-то вроде следующего, используя $csearch, но не смог понять это.

Avg([Column from OVER])
OVER
$esc($csearch([currentOutputTable],"P*"))

Самое близкое, что я получил, использует

$esc($csearch([currentOutputTable],"P*"))

и решетка или категория по имени столбца, но, очевидно, это не дает среднего значения.

По сути, я хочу построить только среднее значение каждого отдельного параметра P

(Avg(["P1"]), Avg(["P2"], ... , Avg(["Pn"]) )

Я надеюсь, что это имеет смысл, и спасибо заранее.

1 Ответ

0 голосов
/ 09 мая 2018

К счастью, IronPython здесь, чтобы спасти день!

Запустите сценарий после обновления таблицы и выполните цикл по всем столбцам таблицы данных, проверив, начинается ли имя столбца с «P». Если это так, добавьте среднее значение столбца к строке, которую вы поместили в новое свойство (здесь я назвал его «SelectedColumns»). Это свойство затем может быть брошено туда, где вы хотели этот надоедливый список Avg (["P1"]), Avg (["P2"], ..., Avg (["Pn"])

from Spotfire.Dxp.Application.Visuals import *
from System import DateTime 
from Spotfire.Dxp.Data.DataType import Date 


myDocument=Application.Document      

if myDocument.Data.Tables.Contains("currentOutputTable")==True:
   myTable=myDocument.Data.Tables["currentOutputTable"]     

x = ""
for col in myTable.Columns: 
    #print col.Properties["ExternalName"] 
    #print col.Properties["Name"]
    if col.Properties["Name"][0] == "P":
        x+= 'Avg(["' + col.Properties["Name"] + '"]), '

#print x[0:len(x)- 2]       
Document.Properties["SelectedColumns"] = x[0:len(x)- 2]
...