Skip to main content

Connect to your tabular model and perform operations programmatically

Project description

PyTabular

PyPI version readthedocs pages-build-deployment

What is it?

PyTabular is a python package that allows for programmatic execution on your tabular models! This is possible thanks to Pythonnet and Microsoft's .Net APIs on Azure Analysis Services. The package should have the dll files included when you import it.

Getting Started

python3 -m pip install python_tabular

In your python environment, import pytabular and call the main Tabular Class. Only parameter needed is a solid connection string.

    import pytabular
    model = pytabular.Tabular(CONNECTION_STR)

DAX Query

    model.Query(DAX_QUERY)
    # Returns a Pandas DataFrame

Refresh Tables and Partitions

    #filter down the collection to what you want to refresh
    tables_to_refresh = [table for table in model.Tables if table.Name in ['Table1','Table2','Table3']]
    
    #Queue up the tables and partitions that you want to refresh.
    model.Refresh(tables_to_refresh)

    #Once you are ready, update to execute the refresh
    model.Update()

Built In Dax Query Helpers

    #Query Every Column
    model.Query_Every_Column() #Will return pd.DataFrame()

    #Query Every Table
    model.Query_Every_Table() #Will return pd.DataFrame()
    
    '''
    NOTE, notice the default values for the query_function argument. 
    Query_Every_Column will get COUNTROWS(VALUES(_))
    and Query_Every_Table() will get COUNTROWS(_)
    with '_' being replaced with the dax identifier to the table or column in question.
    You can replace this str with anything you want. For example output the MIN(_) or MAX(_) of each column rather than the default queries.
    '''

Backup & Revert a Table in Memory

    model.Backup_Table('TableName') #This will backup the table with surround items (columns,measures,relationships,roles,hierarchies,etc.) and will add a suffix of '_backup'
    #Make any changes to your original table and then revert or delete backup as necessary
    model.Revert_Table('TableName') #This will essentially replace your original with _backup

Run BPA from TE2

    TE2 = pytabular.TE2() #Feel free to input your TE2 File path or this will download for you.
    BPA = pytabular.BPA() #Fee free to input your own BPA file or this will download for you from: https://raw.githubusercontent.com/microsoft/Analysis-Services/master/BestPracticeRules/BPARules.json
    model.Analyze_BPA(TE2.EXE_Path,BPA.Location) #This will output a list of BPA violations...

I'm working on converting everything to the google docstring format and using those to populate the documentation. I still have some formatting issues to work through, but that should help with understanding what this package can do.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python_tabular-0.0.10.tar.gz (2.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

python_tabular-0.0.10-py3-none-any.whl (2.2 MB view details)

Uploaded Python 3

File details

Details for the file python_tabular-0.0.10.tar.gz.

File metadata

  • Download URL: python_tabular-0.0.10.tar.gz
  • Upload date:
  • Size: 2.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for python_tabular-0.0.10.tar.gz
Algorithm Hash digest
SHA256 955459b8db9c25923e0c1419472d332eb8fe7643bb8953b82417678ef7c011db
MD5 2a810f9f2acf07b88797f0d19cc61c06
BLAKE2b-256 26aec6c4e90c6b49276e15a98b0fda0f189dc04059e41f2be186636adeb3fc68

See more details on using hashes here.

File details

Details for the file python_tabular-0.0.10-py3-none-any.whl.

File metadata

File hashes

Hashes for python_tabular-0.0.10-py3-none-any.whl
Algorithm Hash digest
SHA256 fa9a9b0606d9ef40dac16d851f9ca86b3c8d5aa99fbe5a4508bf7f372bc9fc9e
MD5 106a23b032cfdf84c653b2d7ed5c49f3
BLAKE2b-256 269c200a1f6c7db530b0f0455f821754b7ee3b7f507205d048fd0e6249bb3b93

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page