[英]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.