Для контекста:
< 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"
}
]
[*]Загрузить это 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
Мобильная версия