Сопоставление представления данных в визуальных элементах Power BI

Добрый день

Я создаю индивидуальную визуализацию на d3js и pbiviz для powerbi

Вот код в файле features.js:

{
"dataRoles":[
    {
        "displayName": "HoleDepth",
        "name": "depth",
        "kind": "Grouping"
    },
    {
        "displayName": "Days",
        "name": "days",
        "kind": "Measure"
    },
    {
        "displayName": "Diametrs",
        "name": "diametrs",
        "kind": "Measure"
    },
    {
        "displayName": "Sensor1",
        "name": "sensor_1",
        "kind": "Measure"
    },
    {
        "displayName": "Sensor2",
        "name": "sensor_2",
        "kind": "Measure"
    },
    {
        "displayName": "Sensor3",
        "name": "sensor_3",
        "kind": "Measure"
    },
    {
        "displayName": "Sensor4",
        "name": "sensor_4",
        "kind": "Measure"
    }
],
"dataViewMappings": [
    {
        "categorical": {
            "categories": {
                "for": { "in": "depth" }
            },
            "values": {
                "select":[
                    { "bind": { "to": "days" } },
                    { "bind": { "to": "diametrs" } },
                    { "bind": { "to": "sensor_1" } },
                    { "bind": { "to": "sensor_2" } },
                    { "bind": { "to": "sensor_3" } },
                    { "bind": { "to": "sensor_4" } }
                ]
            }
        }
    }
]

}

Но в визуализации неудобно использовать категориальный -> массивзначений.

Возможно ли, чтобыкатегориальные -> значения были похожи на объект с ключами?

2 ответа

Я не думаю, что это возможно напрямую через отображение данных. Что я обычно делаю, если хочу, чтобы данные были подготовлены в определенном формате, удобном для визуализации с помощью d3.js, - это настраиваемая функция, которая преобразует данные изVisualUpdateOptions. Затем я вызываю эту функцию внутриpublic update(options: VisualUpdateOptions)

Немного старый пост, но я только начал работать с pbiviz и typescript, и мне пришлось разобраться с этим, так что, надеюсь, это поможет другим, кто придет.

Вы можете ссылаться на объекты из представления данных, используя find

Например:

      let days = dataView.categorical.values.find(value => value.source.roles.days === true);
let diametrs = dataView.categorical.values.find(value => value.source.roles.diametrs === true);
let sensor_1 = dataView.categorical.values.find(value => value.source.roles.sensor_1 === true);

а затем вытяните их значения:

      let days_value = days.values[0];
let diametrs_value = diametrs.values[0];
let sensor_1_value = sensor_1.values[0];

поэтому вам не нужно полагаться на индекс массива

Другие вопросы по тегам