Как создать отношения в семантической модели Power BI с помощью табличного редактора 2.x и файла JSON?C#

Место общения программистов C#
Ответить
Anonymous
 Как создать отношения в семантической модели Power BI с помощью табличного редактора 2.x и файла JSON?

Сообщение Anonymous »

Я работаю над крупномасштабным проектом, в котором мне нужно построить несколько семантических моделей Power BI. Каждая модель содержит десятки таблиц с множеством полей, и мне нужно установить связи между этими таблицами. Создание связей для каждой модели вручную занимает много времени, поэтому я пытаюсь автоматизировать этот процесс с помощью табличного редактора и файла JSON.
Для контекста:
< ul>
[*]У меня более 100 моделей Power BI, и каждая модель содержит около 50+
таблиц.
[*]Каждая модель требует связей между таблицами.< /li>
У меня есть файл JSON для каждого модель, которая определяет
отношения, мощность и направление перекрестной фильтрации.

Вот пример файла JSON:

Код: Выделить всё

[
{
"FromTable": "ORDERS",
"FromColumn": "CustomerID",
"ToTable": "CUSTOMERS",
"ToColumn": "CustomerID",
"Cardinality": "ManyToOne",
"CrossFilteringBehavior": "BothDirections"
},
{
"FromTable": "ORDERS",
"FromColumn": "ProductID",
"ToTable": "PRODUCTS",
"ToColumn": "ProductID",
"Cardinality": "ManyToOne",
"CrossFilteringBehavior": "OneDirection"
}
]
Я попытался написать сценарий C# в Табличном редакторе, чтобы:

[*]Загрузить это JSON.
[*]Проанализируйте данные взаимосвязей.
[*]Динамически создавайте взаимосвязи в модели на основе данных.
< /ol>
Вот скрипт, который я пробовал:

Код: Выделить всё

using System;
using System.IO;
using Newtonsoft.Json;
using System.Collections.Generic;

string jsonFilePath = @"C:\path\to\relationship.json";
string jsonContent = File.ReadAllText(jsonFilePath);

var relationships = JsonConvert.DeserializeObject[*]>(jsonContent);

public class Relationship
{
public string FromTable { get; set; }
public string FromColumn { get; set; }
public string ToTable { get; set; }
public string ToColumn { get; set; }
public string Cardinality { get; set; }
public string CrossFilteringBehavior { get; set; }
}

foreach (var rel in relationships)
{
var fromTable = Model.Tables[rel.FromTable];
var toTable = Model.Tables[rel.ToTable];

if (fromTable == null || toTable == null)
{
Output.WriteLine($"Table '{rel.FromTable}' or '{rel.ToTable}' does not exist in the model.");
continue;
}

var fromColumn = fromTable.Columns[rel.FromColumn];
var toColumn = toTable.Columns[rel.ToColumn];

if (fromColumn == null || toColumn == null)
{
Output.WriteLine($"Column '{rel.FromColumn}' or '{rel.ToColumn}' does not exist.");
continue;
}

var relationship = Model.Relationships.Add(fromColumn, toColumn);
relationship.Cardinality = rel.Cardinality == "ManyToOne" ? RelationshipCardinality.ManyToOne : RelationshipCardinality.OneToOne;
relationship.CrossFilteringBehavior = rel.CrossFilteringBehavior == "BothDirections" ? SecurityFilteringBehavior.BothDirections : SecurityFilteringBehavior.OneDirection;

Output.WriteLine($"Created relationship: {rel.FromTable}.{rel.FromColumn} -> {rel.ToTable}.{rel.ToColumn}");
}
Однако скрипт, похоже, не работает должным образом. Отношения либо не создаются, либо скрипт дает сбой с множеством ошибок.
Вопросы

< li>Как я могу автоматизировать создание связей в нескольких семантических моделях Power BI с помощью табличного редактора и файлов JSON?
[*]Существуют ли какие-либо рекомендации по управлению моделями, состоящими из нескольких таблиц, и автоматизации связей?< /li>
Есть ли какие-либо ограничения или особые соображения при использовании сценариев табличного редактора для создания связей?
[*]Есть ли лучший способ устранения проблем при работе с большими семантическими моделями в табличном редакторе?

Будем благодарны за любую помощь или примеры рабочих сценариев!

Подробнее здесь: https://stackoverflow.com/questions/792 ... editor-2-x
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»