Forum Discussion

Rafaela07's avatar
Rafaela07
Helper I
8 months ago
Solved

Switch from Direct Lake to Import Mode

Hi everyone, I'm facing the following challenge while trying to switch from direct lake mode to import mode. Let me give some context. I'm using Fabric to perform a medallion architecture (bronz...
  • cengizhanarslan's avatar
    cengizhanarslan
    8 months ago

    The warning happens because it requires a refresh operation since it is still directlake. Sorry for misunderstanding here. To convert the your model to Import mode you could use the following c# code through Tabular Editor after connecting to your model. After running it you should use Model --> Deploy option to deploy the newly converted model as a new model in a workspace.

     

    using System.Reflection;

    const string mImportTemplate =
    @"let
    Source = DatabaseQuery,
    Data = Source{{[Schema=""{0}"",Item=""{1}""]}}[Data]
    in
    Data";

    foreach (var table in Model.Tables)
    {
    if (table.Partitions.Count != 1) continue;

    var partition = table.Partitions[0];
    if (partition.Mode != ModeType.DirectLake) continue;

    var pMetadataObjct =
    typeof(Partition).GetProperty(
    "MetadataObject",
    BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.DeclaredOnly);

    var tomPartition =
    pMetadataObjct.GetValue(partition)
    as Microsoft.AnalysisServices.Tabular.Partition;

    var tomPartitionSource =
    tomPartition.Source
    as Microsoft.AnalysisServices.Tabular.EntityPartitionSource;

    if (tomPartitionSource == null) continue;

    var schemaName = tomPartitionSource.SchemaName;
    var tableName = tomPartitionSource.EntityName;

    var partitionName = partition.Name;
    partition.Name += "_old";

    table.AddMPartition(
    partitionName,
    string.Format(mImportTemplate, schemaName, tableName));

    partition.Delete();
    }

    Model.Collation = null;
    Model.DefaultMode = ModeType.Import;
    Model.RemoveAnnotation("TabularEditor_DirectLake");