HHi, I have this data with same display key and in my automation script I try to get data of the license left but it brings the one which has no value in it not the other one, dont know what I am doing wrong here. Please find snippet of script:
IDmsTable table = elementData.GetTable(Convert.ToInt32(paramTableId));
var rows = table.GetRows();
var keyNames = table.GetDisplayKeys().ToArray();
//_engine.GenerateInformation("keyNames-" + keyNames.Length);
foreach (var item in tableParams)
{
var tableColumnParamId = item.GetValue<string>(Srt_Resourcemanagement.Sections.Tableparameters.Table_Column_Id).Value;
//_engine.GenerateInformation("tableColumnParamId-" + tableColumnParamId);
var tableColumnName = item.GetValue<string>(Srt_Resourcemanagement.Sections.Tableparameters.Table_Column_Name).Value;
var tableParamFullName = tableName + "_" + tableColumnName;
for (int i = 0; i < keyNames.Length; i++)
{
var columnData = table.GetColumn<double?>(Convert.ToInt32(tableColumnParamId));
var columnDataValue = columnData.GetValue(keyNames[i], KeyType.DisplayKey);
//_engine.GenerateInformation("Key Name" + keyNames[i]);
if (columnDataValue != null && columnDataValue >= 0)
{
//_engine.GenerateInformation($"keyName-{keyNames[i]} tableParamFullName-{tableParamFullName} value-{columnDataValue.Value.ToString()}");
if (!keyValues.ContainsKey(keyNames[i]))
{
var labelsList = new Dictionary<string, string>
{
{ "pool", poolName },
{ "element", elementName },
{ "parameter", tableParamFullName },
{ "key_name", keyNames[i] },
};
keyValues.Add(keyNames[i], columnDataValue.Value);
var sampleList = new List<Sample>
{
new Sample { Value = columnDataValue.Value, Timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() },
};
metricDataList.Add(new MetricData { Labels = labelsList, Samples = sampleList });
}
}
}
keyValues.Clear();
}
It get all the display key names, but I think when it send to get column value with that same name it brings only one of those
var columnData = table.GetColumn<double?>(Convert.ToInt32(tableColumnParamId));
var columnDataValue = columnData.GetValue(keyNames[i], KeyType.DisplayKey);
That might be issue, can someone help on this please
Hi Apurva
As mentioned in Display keys | DataMiner Docs, a Display Key needs to be unique in a table.
As you are doing the .GetValue() method, you can easily swap to use the Primary Keys (with KeyType.PrimaryKey for the GetValue method) instead. If you still need to have the Display Key (for the labelsList), then you can do a second GetColumn & GetValue to retrieve the Display Key for the current row.