Select to view content in your preferred language

Arcade can't run expression

176
1
Jump to solution
02-08-2025 10:02 AM
cvelasco02
New Contributor

Hello community, I'm new here. I've the next script that I want to use in a Dashboard:

// Cargar las capas desde el datastore
var intervenciones = FeatureSetByPortalItem(
Portal("https://gadmilagro-cpuot.maps.arcgis.com"),
"dc16b23068eb4c58bd6624cf1d3a4c3c",
0,
["Costo_Total"]
);
var ejes_viales = FeatureSetByPortalItem(
Portal("https://gadmilagro-cpuot.maps.arcgis.com"),
"6031351b836f461e823f8571e60cf840",
0,
["Costo_Visible"]
);

// Validar si ambas capas están vacías
if (IsEmpty(intervenciones) && IsEmpty(ejes_viales)) {
Console("Ambas capas están vacías.");
return 0;
}

// Calcular la suma de los valores en cada capa
var suma_intervenciones = 0;
var suma_ejes = 0;

if (!IsEmpty(intervenciones)) {
var costo_total_values = Filter(intervenciones, "Costo_Total IS NOT NULL");
suma_intervenciones = DefaultValue(Sum(costo_total_values, "Costo_Total"), 0);
Console("Suma de intervenciones: " + suma_intervenciones);
}

if (!IsEmpty(ejes_viales)) {
var costo_visible_values = Filter(ejes_viales, "Costo_Visible IS NOT NULL");
suma_ejes = DefaultValue(Sum(costo_visible_values, "Costo_Visible"), 0);
Console("Suma de ejes viales: " + suma_ejes);
}

// Retornar la suma total de ambas capas
return suma_intervenciones + suma_ejes;

But, when I want to choice de expression in ArcGIS Dashboard, it shows the following message: "Can't run Arcade script"

0 Kudos
1 Solution

Accepted Solutions
KenBuja
MVP Esteemed Contributor

A Data Expression must always return a FeatureSet, not a text string.

// Cargar las capas desde el datastore
var intervenciones = FeatureSetByPortalItem(
  Portal("https://gadmilagro-cpuot.maps.arcgis.com"),
  "dc16b23068eb4c58bd6624cf1d3a4c3c",
  0,
  ["Costo_Total"]
);
var ejes_viales = FeatureSetByPortalItem(
  Portal("https://gadmilagro-cpuot.maps.arcgis.com"),
  "6031351b836f461e823f8571e60cf840",
  0,
  ["Costo_Visible"]
);

var output = 0;

// Validar si ambas capas están vacías
if (IsEmpty(intervenciones) && IsEmpty(ejes_viales)) {
  Console("Ambas capas están vacías.");
  //return 0;
} else {
  // Calcular la suma de los valores en cada capa
  var suma_intervenciones = 0;
  var suma_ejes = 0;

  if (!IsEmpty(intervenciones)) {
    var costo_total_values = Filter(intervenciones, "Costo_Total IS NOT NULL");
    suma_intervenciones = DefaultValue(
      Sum(costo_total_values, "Costo_Total"),
      0
    );
    Console("Suma de intervenciones: " + suma_intervenciones);
  }

  if (!IsEmpty(ejes_viales)) {
    var costo_visible_values = Filter(ejes_viales, "Costo_Visible IS NOT NULL");
    suma_ejes = DefaultValue(Sum(costo_visible_values, "Costo_Visible"), 0);
    Console("Suma de ejes viales: " + suma_ejes);
    output = suma_intervenciones + suma_ejes;
  }
}

var theDict = {
  fields: [{ name: "Suma", type: "esriFieldTypeDouble" }],
  geometryType: "",
  features: [{ attributes: { Suma: output } }]
};

return FeatureSet(theDict);

 

View solution in original post

1 Reply
KenBuja
MVP Esteemed Contributor

A Data Expression must always return a FeatureSet, not a text string.

// Cargar las capas desde el datastore
var intervenciones = FeatureSetByPortalItem(
  Portal("https://gadmilagro-cpuot.maps.arcgis.com"),
  "dc16b23068eb4c58bd6624cf1d3a4c3c",
  0,
  ["Costo_Total"]
);
var ejes_viales = FeatureSetByPortalItem(
  Portal("https://gadmilagro-cpuot.maps.arcgis.com"),
  "6031351b836f461e823f8571e60cf840",
  0,
  ["Costo_Visible"]
);

var output = 0;

// Validar si ambas capas están vacías
if (IsEmpty(intervenciones) && IsEmpty(ejes_viales)) {
  Console("Ambas capas están vacías.");
  //return 0;
} else {
  // Calcular la suma de los valores en cada capa
  var suma_intervenciones = 0;
  var suma_ejes = 0;

  if (!IsEmpty(intervenciones)) {
    var costo_total_values = Filter(intervenciones, "Costo_Total IS NOT NULL");
    suma_intervenciones = DefaultValue(
      Sum(costo_total_values, "Costo_Total"),
      0
    );
    Console("Suma de intervenciones: " + suma_intervenciones);
  }

  if (!IsEmpty(ejes_viales)) {
    var costo_visible_values = Filter(ejes_viales, "Costo_Visible IS NOT NULL");
    suma_ejes = DefaultValue(Sum(costo_visible_values, "Costo_Visible"), 0);
    Console("Suma de ejes viales: " + suma_ejes);
    output = suma_intervenciones + suma_ejes;
  }
}

var theDict = {
  fields: [{ name: "Suma", type: "esriFieldTypeDouble" }],
  geometryType: "",
  features: [{ attributes: { Suma: output } }]
};

return FeatureSet(theDict);