【问题标题】:How to use a parameter which a user can update in a calculated field in getFields (Data Studio Community Connector)如何使用用户可以在 getFields 的计算字段中更新的参数(Data Studio 社区连接器)
【发布时间】:2022-09-23 04:07:22
【问题描述】:

我在 getConfig() 的数据工作室社区连接器中定义了一个选择参数,如下所示。然后将该参数用作报表中的下拉数据控件。

config
    .newSelectSingle()
    .setId(\"characteristic_selected\")
    .setName(\"Characteristic selected\")
    .addOption(
        config
          .newOptionBuilder()
          .setLabel(\"a\")
          .setValue(\"a\")
    )
    .addOption(
      config
        .newOptionBuilder()
        .setLabel(\"b\")
        .setValue(\"b\")
    )
    .addOption(
      config
        .newOptionBuilder()
        .setLabel(\"c\")
        .setValue(\"c\")
    )
    .addOption(
      config
        .newOptionBuilder()
        .setLabel(\"d\")
        .setValue(\"d\")
    )
    .addOption(
      config
        .newOptionBuilder()
        .setLabel(\"e\")
        .setValue(\"e\")
    )
    .setAllowOverride(true);

在 getFields() 中,我定义了 Characteristic,然后从数据库 a、b、c、d 或 e 返回数据:

  fields.newDimension()
    .setId(\'Characteristic\')
    .setType(types.TEXT);

我正在尝试定义一个计算字段,然后将其用作图表和表格中的过滤器,以仅显示用户在下拉数据控件中选择的选项的数据。例如。如果用户选择 \"b\",则仅会显示标记为 \"b\" 的数据。

我的尝试(灵感来自这里的答案:How to use a Parameter in calculated field defined in getFields() (Google Data Studio Community Connector)?)是:

  fields.newDimension()
    .setId(\'Characteristic calc\')
    .setDescription(\'Sets true if characteristic selected in dropdown is the same as the characteristic dimension field\')
    .setFormula(\'$Characteristic = \"\' + request.configParams.characteristic_selected + \'\"\')
    .setType(types.BOOLEAN);

然后我对表格和图表应用过滤器,仅包含 Characteristic calc = True

默认值为 \"a\"。当我第一次加载页面时,数据过滤正确,只显示“a”。但是,当我从下拉数据控件中选择 \"b\" 时,它仍然只显示 \"a\" 的数据。在报告中更改时,代码似乎没有捕获更新的 configParam。

注意:如果我在报告中而不是在数据工作室连接器中设置计算字段,那么它可以正常工作。但是,我在很多报告中都使用了连接器,因此每次创建新报告时都必须创建计算字段,这很烦人。

  • 您将选择的值硬编码到公式中。 .setFormula(\' param_name \')
  • @Samuel,感谢您的回复。我不确定我是否理解。我尝试删除参数周围的引号,所以.setFormula(\'$Characteristic = \' + request.configParams.characteristic_selected + \'\') 不起作用。我也尝试在尺寸周围添加引号,所以.setFormula(\'\"$Characteristic\" = \"\' + request.configParams.characteristic_selected + \'\"\') 这也不起作用。你能稍微扩展一下你的意思吗?

标签: google-data-studio


【解决方案1】:

抱歉,只有在源配置期间才设置参数时,使用.setFormula 才有效。如果用户可以在报告中更改它,则必须在function getSchema(request) 中完成字段计算。

function getSchema(request) {
  var fields = cc.getFields();
  var types = cc.FieldType;
 fields.newDimension()
    .setId('Characteristic_info_info')
    .setDescription('tempory field')
    .setType(types.TEXT);
 fields.newDimension()
    .setId('Characteristic calc')
    .setDescription('Sets true if characteristic selected in dropdown is the same as the characteristic dimension field')
    .setFormula('$Characteristic = $Characteristic_info_info')
    .setType(types.BOOLEAN);

然后在此函数中将列设置为正确的值:

function getData(request) {
....
  var schemaE = getFields(request).forIds(
    request.fields.map(function(field) {
      return field.name;
    })
  ).build();

  var out1=[];
  schemaE.forEach(a=>out1.push(a.name in params ? params[a.name] : 'nope:'+a.name ));

  var out= {
    schema: schemaE,
    rows: [{values:out1},{values:out1},{values:out1}] 
  };
console.log(schemaE)

console.log(request.configParams.characteristic_selected)

for(let col in schemaE){
if(schemaE[col].name=="Characteristic_info_info"){
for(let i in out.rows)
 {
   out.rows[i].values[col]=request.configParams.characteristic_selected+"!";
 }
}
}
  return out;
}

如果一个参数可以在.setFormula 中使用,而不仅仅是$ 用于字段,生活会容易得多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 2022-12-10
    • 2018-03-01
    • 1970-01-01
    • 2020-12-17
    • 2021-04-11
    • 1970-01-01
    相关资源
    最近更新 更多