<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Model Optimization in Notebook Gallery</title>
    <link>https://community.fabric.microsoft.com/t5/Notebook-Gallery/Model-Optimization/m-p/4623041#M6</link>
    <description>&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;H3&gt;Download this notebook from:&amp;nbsp;&lt;A href="https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Model%20Optimization.ipynb" target="_blank" rel="noopener"&gt;semantic-link-labs/notebooks/Model Optimization.ipynb at main · microsoft/semantic-link-labs · GitHub&lt;/A&gt;&lt;/H3&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;&lt;STRONG&gt;Install the latest .whl package&lt;/STRONG&gt;&lt;/H3&gt;&lt;P&gt;Check &lt;A href="https://pypi.org/project/semantic-link-labs/" target="_blank" rel="noopener"&gt;here&lt;/A&gt; to see the latest version.&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;%pip install semantic-link-labs&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;H3&gt;&lt;STRONG&gt;Import the library&lt;/STRONG&gt;&lt;/H3&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;import sempy_labs as labs
from sempy_labs import lakehouse as lake
from sempy_labs import directlake
import sempy_labs.report as rep

dataset_name = ''
workspace_name = None&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;H3&gt;&lt;STRONG&gt;Vertipaq Analyzer&lt;/STRONG&gt;&lt;/H3&gt;&lt;P&gt;&lt;STRONG&gt;&lt;div data-video-id="https://www.youtube.com/watch?v=RnrwUqg2-VI" data-video-remote-vid="https://www.youtube.com/watch?v=RnrwUqg2-VI" class="lia-video-container lia-media-is-center lia-media-size-small"&gt;&lt;iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FRnrwUqg2-VI%3Ffeature%3Doembed&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DRnrwUqg2-VI&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FRnrwUqg2-VI%2Fhqdefault.jpg&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" allowfullscreen="" style="max-width: 100%"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;labs.vertipaq_analyzer(dataset=dataset_name, workspace=workspace_name)&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;P&gt;Export the Vertipaq Analyzer results to a .zip file in your lakehouse&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;labs.vertipaq_analyzer(dataset=dataset_name, workspace=workspace_name, export='zip')&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;P&gt;Export the Vertipaq Analyzer results to append to delta tables in your lakehouse.&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;labs.vertipaq_analyzer(dataset=dataset_name, workspace=workspace_name, export='table')&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;P&gt;Visualize the contents of an exported Vertipaq Analzyer .zip file.&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;labs.import_vertipaq_analyzer(folder_path='', file_name='')&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;H3&gt;&lt;STRONG&gt;Best Practice Analyzer&lt;/STRONG&gt;&lt;/H3&gt;&lt;P&gt;&lt;STRONG&gt;&lt;div data-video-id="https://www.youtube.com/watch?v=095avwDn4Hk" data-video-remote-vid="https://www.youtube.com/watch?v=095avwDn4Hk" class="lia-video-container lia-media-is-center lia-media-size-small"&gt;&lt;iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F095avwDn4Hk%3Ffeature%3Doembed&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D095avwDn4Hk&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F095avwDn4Hk%2Fhqdefault.jpg&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" allowfullscreen="" style="max-width: 100%"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This runs the &lt;A href="https://github.com/microsoft/Analysis-Services/tree/master/BestPracticeRules" target="_blank" rel="noopener"&gt;standard rules&lt;/A&gt; for semantic models posted on Microsoft's GitHub.&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;labs.run_model_bpa(dataset=dataset_name, workspace=workspace_name)&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;P&gt;This runs the Best Practice Analyzer and exports the results to the 'modelbparesults' delta table in your Fabric lakehouse.&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;labs.run_model_bpa(dataset=dataset_name, workspace=workspace_name, export=True)&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;P&gt;This runs the Best Practice Analyzer with the rules translated into Italian (can enter any language in the 'language' parameter).&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;labs.run_model_bpa(dataset=dataset_name, workspace=workspace_name, language='italian')&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt; For analyzing model BPA results at scale, see the Best Practice Analyzer Report notebook (link below).&lt;/DIV&gt;&lt;P&gt;&lt;A href="https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Best%20Practice%20Analyzer%20Report.ipynb" target="_blank" rel="noopener"&gt;Best Practice Analyzer Report&lt;/A&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;H3&gt;&lt;STRONG&gt;Run BPA using your own best practice rules&lt;/STRONG&gt;&lt;/H3&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;import sempy
sempy.fabric._client._utils._init_analysis_services()
import Microsoft.AnalysisServices.Tabular as TOM
import pandas as pd

dataset_name = ''
workspace_name = ''

rules = pd.DataFrame(
    [
        (
            "Performance",
            "Table",
            "Warning",
            "Rule name...",
            lambda obj, tom: tom.is_calculated_table(table_name=obj.Name),
            'Rule description...',
            '',
        ),
        (
            "Performance",
            "Column",
            "Warning",
            "Do not use floating point data types",
            lambda obj, tom: obj.DataType == TOM.DataType.Double,
            'The "Double" floating point data type should be avoided, as it can result in unpredictable roundoff errors and decreased performance in certain scenarios. Use "Int64" or "Decimal" where appropriate (but note that "Decimal" is limited to 4 digits after the decimal sign).',
        )
    ],
    columns=[
            "Category",
            "Scope",
            "Severity",
            "Rule Name",
            "Expression",
            "Description",
            "URL",
        ],
)

labs.run_model_bpa(dataset=dataset_name, workspace=workspace_name, rules=rules)&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;H3&gt;&lt;STRONG&gt;Translate a semantic model's metadata&lt;/STRONG&gt;&lt;/H3&gt;&lt;P&gt;&lt;STRONG&gt;&lt;div data-video-id="https://www.youtube.com/watch?v=5hmeuZGDAws" data-video-remote-vid="https://www.youtube.com/watch?v=5hmeuZGDAws" class="lia-video-container lia-media-is-center lia-media-size-small"&gt;&lt;iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F5hmeuZGDAws%3Ffeature%3Doembed&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D5hmeuZGDAws&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F5hmeuZGDAws%2Fhqdefault.jpg&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" allowfullscreen="" style="max-width: 100%"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;labs.translate_semantic_model(dataset=dataset_name, workspace=workspace_name, languages=['italian', 'japanese', 'hindi'], exclude_characters='_')&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;H3&gt;&lt;STRONG&gt;Direct Lake&lt;/STRONG&gt;&lt;/H3&gt;&lt;P&gt;Check if any lakehouse tables will hit the &lt;A href="https://learn.microsoft.com/power-bi/enterprise/directlake-overview#fallback" target="_blank" rel="noopener"&gt;Direct Lake guardrails&lt;/A&gt;.&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;lake.get_lakehouse_tables(lakehouse=None, workspace=None, extended=True, count_rows=False)&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;lake.get_lakehouse_tables(lakehouse=None, workspace=None, extended=True, count_rows=False, export=True)&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;P&gt;Check if any tables in a Direct Lake semantic model will fall back to DirectQuery.&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;directlake.check_fallback_reason(dataset=dataset_name, workspace=workspace_name)&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;H3&gt;&lt;STRONG&gt;&lt;A href="https://docs.delta.io/latest/optimizations-oss.html" target="_blank" rel="noopener"&gt;OPTIMIZE&lt;/A&gt; your lakehouse delta tables.&lt;/STRONG&gt;&lt;/H3&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;lake.optimize_lakehouse_tables(tables=['', ''], lakehouse=None, workspace=None)&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;P&gt;Refresh/reframe your Direct Lake semantic model and restore the columns which were in memory prior to the refresh.&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;directlake.warm_direct_lake_cache_isresident(dataset=dataset_name, workspace=workspace_name)&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;P&gt;Ensure a warm cache for your users by putting the columns of a Direct Lake semantic model into memory based on the contents of a &lt;A href="https://learn.microsoft.com/analysis-services/tabular-models/perspectives-ssas-tabular?view=asallproducts-allversions" target="_blank" rel="noopener"&gt;perspective&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;Perspectives can be created either in &lt;A href="https://github.com/TabularEditor/TabularEditor3/releases/latest" target="_blank" rel="noopener"&gt;Tabular Editor 3&lt;/A&gt; or in &lt;A href="https://github.com/TabularEditor/TabularEditor/releases/latest" target="_blank" rel="noopener"&gt;Tabular Editor 2&lt;/A&gt; using the &lt;A href="https://www.elegantbi.com/post/perspectiveeditor" target="_blank" rel="noopener"&gt;Perspective Editor&lt;/A&gt;.&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;directlake.warm_direct_lake_cache_perspective(dataset=dataset_name, workspace=workspace_name, perspective='', add_dependencies=True)&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="msgUrl hidden"&gt;https%3A%2F%2Fgithub.com%2Fmicrosoft%2Fsemantic-link-labs%2Fblob%2Fmain%2Fnotebooks%2FModel%2520Optimization.ipynb&lt;/SPAN&gt;&lt;/P&gt;</description>
    <pubDate>Mon, 24 Mar 2025 21:59:41 GMT</pubDate>
    <dc:creator>mikova</dc:creator>
    <dc:date>2025-03-24T21:59:41Z</dc:date>
    <item>
      <title>Model Optimization</title>
      <link>https://community.fabric.microsoft.com/t5/Notebook-Gallery/Model-Optimization/m-p/4623041#M6</link>
      <description>&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;H3&gt;Download this notebook from:&amp;nbsp;&lt;A href="https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Model%20Optimization.ipynb" target="_blank" rel="noopener"&gt;semantic-link-labs/notebooks/Model Optimization.ipynb at main · microsoft/semantic-link-labs · GitHub&lt;/A&gt;&lt;/H3&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;&lt;STRONG&gt;Install the latest .whl package&lt;/STRONG&gt;&lt;/H3&gt;&lt;P&gt;Check &lt;A href="https://pypi.org/project/semantic-link-labs/" target="_blank" rel="noopener"&gt;here&lt;/A&gt; to see the latest version.&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;%pip install semantic-link-labs&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;H3&gt;&lt;STRONG&gt;Import the library&lt;/STRONG&gt;&lt;/H3&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;import sempy_labs as labs
from sempy_labs import lakehouse as lake
from sempy_labs import directlake
import sempy_labs.report as rep

dataset_name = ''
workspace_name = None&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;H3&gt;&lt;STRONG&gt;Vertipaq Analyzer&lt;/STRONG&gt;&lt;/H3&gt;&lt;P&gt;&lt;STRONG&gt;&lt;div data-video-id="https://www.youtube.com/watch?v=RnrwUqg2-VI" data-video-remote-vid="https://www.youtube.com/watch?v=RnrwUqg2-VI" class="lia-video-container lia-media-is-center lia-media-size-small"&gt;&lt;iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FRnrwUqg2-VI%3Ffeature%3Doembed&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DRnrwUqg2-VI&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FRnrwUqg2-VI%2Fhqdefault.jpg&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" allowfullscreen="" style="max-width: 100%"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;labs.vertipaq_analyzer(dataset=dataset_name, workspace=workspace_name)&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;P&gt;Export the Vertipaq Analyzer results to a .zip file in your lakehouse&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;labs.vertipaq_analyzer(dataset=dataset_name, workspace=workspace_name, export='zip')&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;P&gt;Export the Vertipaq Analyzer results to append to delta tables in your lakehouse.&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;labs.vertipaq_analyzer(dataset=dataset_name, workspace=workspace_name, export='table')&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;P&gt;Visualize the contents of an exported Vertipaq Analzyer .zip file.&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;labs.import_vertipaq_analyzer(folder_path='', file_name='')&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;H3&gt;&lt;STRONG&gt;Best Practice Analyzer&lt;/STRONG&gt;&lt;/H3&gt;&lt;P&gt;&lt;STRONG&gt;&lt;div data-video-id="https://www.youtube.com/watch?v=095avwDn4Hk" data-video-remote-vid="https://www.youtube.com/watch?v=095avwDn4Hk" class="lia-video-container lia-media-is-center lia-media-size-small"&gt;&lt;iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F095avwDn4Hk%3Ffeature%3Doembed&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D095avwDn4Hk&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F095avwDn4Hk%2Fhqdefault.jpg&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" allowfullscreen="" style="max-width: 100%"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This runs the &lt;A href="https://github.com/microsoft/Analysis-Services/tree/master/BestPracticeRules" target="_blank" rel="noopener"&gt;standard rules&lt;/A&gt; for semantic models posted on Microsoft's GitHub.&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;labs.run_model_bpa(dataset=dataset_name, workspace=workspace_name)&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;P&gt;This runs the Best Practice Analyzer and exports the results to the 'modelbparesults' delta table in your Fabric lakehouse.&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;labs.run_model_bpa(dataset=dataset_name, workspace=workspace_name, export=True)&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;P&gt;This runs the Best Practice Analyzer with the rules translated into Italian (can enter any language in the 'language' parameter).&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;labs.run_model_bpa(dataset=dataset_name, workspace=workspace_name, language='italian')&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt; For analyzing model BPA results at scale, see the Best Practice Analyzer Report notebook (link below).&lt;/DIV&gt;&lt;P&gt;&lt;A href="https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Best%20Practice%20Analyzer%20Report.ipynb" target="_blank" rel="noopener"&gt;Best Practice Analyzer Report&lt;/A&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;H3&gt;&lt;STRONG&gt;Run BPA using your own best practice rules&lt;/STRONG&gt;&lt;/H3&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;import sempy
sempy.fabric._client._utils._init_analysis_services()
import Microsoft.AnalysisServices.Tabular as TOM
import pandas as pd

dataset_name = ''
workspace_name = ''

rules = pd.DataFrame(
    [
        (
            "Performance",
            "Table",
            "Warning",
            "Rule name...",
            lambda obj, tom: tom.is_calculated_table(table_name=obj.Name),
            'Rule description...',
            '',
        ),
        (
            "Performance",
            "Column",
            "Warning",
            "Do not use floating point data types",
            lambda obj, tom: obj.DataType == TOM.DataType.Double,
            'The "Double" floating point data type should be avoided, as it can result in unpredictable roundoff errors and decreased performance in certain scenarios. Use "Int64" or "Decimal" where appropriate (but note that "Decimal" is limited to 4 digits after the decimal sign).',
        )
    ],
    columns=[
            "Category",
            "Scope",
            "Severity",
            "Rule Name",
            "Expression",
            "Description",
            "URL",
        ],
)

labs.run_model_bpa(dataset=dataset_name, workspace=workspace_name, rules=rules)&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;H3&gt;&lt;STRONG&gt;Translate a semantic model's metadata&lt;/STRONG&gt;&lt;/H3&gt;&lt;P&gt;&lt;STRONG&gt;&lt;div data-video-id="https://www.youtube.com/watch?v=5hmeuZGDAws" data-video-remote-vid="https://www.youtube.com/watch?v=5hmeuZGDAws" class="lia-video-container lia-media-is-center lia-media-size-small"&gt;&lt;iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F5hmeuZGDAws%3Ffeature%3Doembed&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D5hmeuZGDAws&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F5hmeuZGDAws%2Fhqdefault.jpg&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" allowfullscreen="" style="max-width: 100%"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;labs.translate_semantic_model(dataset=dataset_name, workspace=workspace_name, languages=['italian', 'japanese', 'hindi'], exclude_characters='_')&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;H3&gt;&lt;STRONG&gt;Direct Lake&lt;/STRONG&gt;&lt;/H3&gt;&lt;P&gt;Check if any lakehouse tables will hit the &lt;A href="https://learn.microsoft.com/power-bi/enterprise/directlake-overview#fallback" target="_blank" rel="noopener"&gt;Direct Lake guardrails&lt;/A&gt;.&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;lake.get_lakehouse_tables(lakehouse=None, workspace=None, extended=True, count_rows=False)&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;lake.get_lakehouse_tables(lakehouse=None, workspace=None, extended=True, count_rows=False, export=True)&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;P&gt;Check if any tables in a Direct Lake semantic model will fall back to DirectQuery.&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;directlake.check_fallback_reason(dataset=dataset_name, workspace=workspace_name)&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;H3&gt;&lt;STRONG&gt;&lt;A href="https://docs.delta.io/latest/optimizations-oss.html" target="_blank" rel="noopener"&gt;OPTIMIZE&lt;/A&gt; your lakehouse delta tables.&lt;/STRONG&gt;&lt;/H3&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;lake.optimize_lakehouse_tables(tables=['', ''], lakehouse=None, workspace=None)&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;P&gt;Refresh/reframe your Direct Lake semantic model and restore the columns which were in memory prior to the refresh.&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;directlake.warm_direct_lake_cache_isresident(dataset=dataset_name, workspace=workspace_name)&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;P&gt;Ensure a warm cache for your users by putting the columns of a Direct Lake semantic model into memory based on the contents of a &lt;A href="https://learn.microsoft.com/analysis-services/tabular-models/perspectives-ssas-tabular?view=asallproducts-allversions" target="_blank" rel="noopener"&gt;perspective&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;Perspectives can be created either in &lt;A href="https://github.com/TabularEditor/TabularEditor3/releases/latest" target="_blank" rel="noopener"&gt;Tabular Editor 3&lt;/A&gt; or in &lt;A href="https://github.com/TabularEditor/TabularEditor/releases/latest" target="_blank" rel="noopener"&gt;Tabular Editor 2&lt;/A&gt; using the &lt;A href="https://www.elegantbi.com/post/perspectiveeditor" target="_blank" rel="noopener"&gt;Perspective Editor&lt;/A&gt;.&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;directlake.warm_direct_lake_cache_perspective(dataset=dataset_name, workspace=workspace_name, perspective='', add_dependencies=True)&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="msgUrl hidden"&gt;https%3A%2F%2Fgithub.com%2Fmicrosoft%2Fsemantic-link-labs%2Fblob%2Fmain%2Fnotebooks%2FModel%2520Optimization.ipynb&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 24 Mar 2025 21:59:41 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Notebook-Gallery/Model-Optimization/m-p/4623041#M6</guid>
      <dc:creator>mikova</dc:creator>
      <dc:date>2025-03-24T21:59:41Z</dc:date>
    </item>
  </channel>
</rss>

