2017-05-16 7 views
1

オンラインでこの回答を見つけることができませんでしたので、質問と答えを投稿することに決めました。Power BI開発のcolumns.rolesにアクセスするにはどうすればよいですか?

私はcapabilities.jsonファイルにテーブルを作成しました:私は最初のカテゴリは、最初の部分から来るので、私は単純に、例えば、最初のカテゴリから凡例のデータを設定することができなかったことに気づい

"dataRoles": [ 
    { 
     "displayName": "Stakeholders", 
     "name": "roleIwant", 
     "kind": "GroupingOrMeasure" 
    } 
... 
"dataViewMappings": [   
    { 
     "table": { 
      "rows": { 
       "select": [ 
        { 
        "for": { 
         "in": "roleIwant" 
        } 
        } 
       ] 
      } 
     } 
    } 
] 

位置にかかわらず、ユーザーがドラッグするデータの数。たとえば、Power BIオンラインでさまざまな種類のデータを設定した場合、1つを削除すると、すべての注文が乱れることがあります。私はこれを解決する最善の方法は、各列の役割を特定し、そこから行くことだと考えました。

あなたはショーのデータビューをクリックすると、階層を明確に示しています

...table->columns[0]->roles: { "roleIwant": true } 

だから私は、私は好きそれにアクセスできると思っていた:

...table.columns[0].roles.roleIwant 
が、それはそうではありません。コマンドプロンプトからpbiviz startを使用してコンパイルしていましたが、エラーが表示されます。

error TYPESCRIPT /src/visual.ts : (56,50) Property 'roleIwant' does not exist on type '{ [name: string]: boolean; }'. 

なぜこのようにアクセスできないのですか?私はネイティブに、ロールにはロールの役割が含まれていないと考えていましたが、これは本当ですが、それは問題ではありません。...

答えて

1

解決策は実際にはかなり簡単です。私はドットヘルプ(提案のロールの後にドットを打つ)はありませんが、ロールには通常のオブジェクトプロパティを使用できます。この場合のコマンドは次のようになります

...table.columns[0].roles.hasOwnProperty("roleIwant") 

と機能コード部分:

... 
columns.forEach((column) =>{ 
     if(column.roles.hasOwnProperty("roleIwant")){ 
      roleIwantData = dataview.categorical.categories[columns.indexOf(column)].values; 
     }) 

それが財産を持っている場合は、それがその役割に属しています。ここから、保存されたデータにはそのロールの実際の値が含まれます!ここで追加する唯一のことは、コードの使い方によっては、複数のロールに複数のロールが使用されている場合、複数のifを実行して、別のロールであるかどうかをチェックすることです。

誰かがこのトピックに関するアドバイスやより良いやり方をしている場合は、是非とも。私は列の役割にアクセスするための方法については、すべてのエラーを探し、何も得なかったので、このトピックは他の誰かを助けることを願っています。そして、言葉遣いのために申し訳ありません - 私は多く話す傾向があります。

関連する問題