![](/img/trans.png)
[英]Data Studio Community Connector: How to change Data freshness interval
[英]How to use a parameter which a user can update in a calculated field in getFields (Data Studio Community Connector)
我有一个 select 参数,我在 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”的数据才会显示。
我的尝试(受到此处答案的启发: 如何在 getFields()(Google Data Studio 社区连接器)中定义的计算字段中使用参数? )是:
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”。 但是,当我从下拉数据控件中选择 select "b" 时,它仍然只显示 "a" 的数据。 在报告中更改时,代码似乎没有捕获更新的 configParam。
注意:如果我在报告中而不是在数据工作室连接器中设置计算字段,那么它可以正常工作。 但是,我在很多报告中都使用了连接器,因此每次创建新报告时都必须创建计算字段,这很烦人。
抱歉,只有在源配置期间才设置参数时,使用.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 中将列设置为正确的值:
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
中使用参数而不仅仅是$
用于字段,那么生活会容易得多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.