diff --git a/.github/workflows/publish-pypi.yml b/.github/workflows/publish-pypi.yml new file mode 100644 index 0000000..9c208c4 --- /dev/null +++ b/.github/workflows/publish-pypi.yml @@ -0,0 +1,34 @@ +name: Publish to PyPi + + +on: + workflow_dispatch: + push: + branches: development, main + +jobs: + build-n-publish: + name: Build dist files for PyPi + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + - uses: actions/setup-python@v1 + with: + python-version: 3.8 + - name: Build dist files + run: > + python -m pip install --upgrade pip && pip install -e .[build] && + python setup.py build && + python setup.py sdist --formats=gztar + - name: Publish distribution 📦 to Test PyPI + uses: pypa/gh-action-pypi-publish@release/v1 # license BSD-2 + with: + password: ${{ secrets.TEST_PYPI_API_TOKEN }} + repository_url: https://test.pypi.org/legacy/ + - name: Publish distribution 📦 to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 # license BSD-2 + with: + password: ${{ secrets.PYPI_API_TOKEN }} + diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml new file mode 100644 index 0000000..4bd171f --- /dev/null +++ b/.github/workflows/python-package.yml @@ -0,0 +1,59 @@ +# This workflow will install Python dependencies, run tests and lint with a variety of Python versions +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions + +name: Python package + +on: + push: + paths-ignore: + - 'docs/**' + pull_request: + branches: '*' + +jobs: + build: + + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: [3.7, 3.8, 3.9, '3.10'] + + steps: + - uses: actions/checkout@v2 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + - name: Test + run: | + python setup.py test + + + lint: + + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: [3.9] + + steps: + - uses: actions/checkout@v2 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install pycodestyle + if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + - name: Lint with pycodestyle + run: | + pycodestyle tableaudocumentapi test samples + diff --git a/.gitignore b/.gitignore index ee250af..994e968 100644 --- a/.gitignore +++ b/.gitignore @@ -34,6 +34,8 @@ var/ pip-log.txt pip-delete-this-directory.txt +Gemfile.lock + # Unit test / coverage reports htmlcov/ .tox/ @@ -64,3 +66,12 @@ target/ #Other things .DS_Store .idea + +#Editor things +*.sublime-project +*.sublime-workspace +settings.json +tasks.json + +#Jekyll +docs/_site diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index e2a9073..0000000 --- a/.travis.yml +++ /dev/null @@ -1,22 +0,0 @@ -language: python -python: - - "2.7" - - "3.3" - - "3.4" - - "3.5" - - "pypy" -# command to install dependencies -install: - - "pip install -e ." - - "pip install pep8" -# command to run tests -script: - # Tests - - python setup.py test - # pep8 - - pep8 . - # Examples - - (cd "samples/replicate-workbook" && python replicate_workbook.py) - - (cd "samples/list-tds-info" && python list_tds_info.py) - - (cd "samples/show-fields" && python show_fields.py) - diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ba40cd..1a18c16 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,44 @@ +## 011 (November 2022) +* Remove extraneous debug print statements + +## 010 (June 2022) +* Add service/schema attributes + +## 091 (March 2022) +* Add attribute for hidden field + +## 09 (December 2021) +* PyPI upgraded to Python3 + +## 08 (October 2021) +* See dashboards in a workbook +* Add shapes property +* Add custom sql +* Drop python 2, add up through 3.9 + +## 07 (26 May 2021) +* Fix bug in xfile that overwrote the namespace name when saving a document + +## 06 (11 January 2017) + +* Initial SQL and query banding support (#123) +* Fixed bug in xfiles to allow opening workbooks with external file caches (#117, #118) +* Code Cleanup (#120, #121) +* Added Py36 support (#124) +* Switched to pycodestyle from pip8 on travis runs (#124) + +## 05 (01 November 2016) + +* Added ability to set the port for connections (#97) +* Added ability to read and write caption for datasources (#99) +* Added documentation + +## 0.4 (07 October 2016) + +* Add ability to remove repository location (#86) +* Fixed bug in connection parsing when federated connections are present (#87) +* Fixed bug in UNICODE support (#80) + ## 0.3 (31 August 2016) * Added basic connection class retargeting (#65) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md new file mode 100644 index 0000000..903e57b --- /dev/null +++ b/CONTRIBUTORS.md @@ -0,0 +1,15 @@ +This project wouldn't be possible without our amazing contributors. + +The following people have contributed to this project to make it possible, and we thank them for their contributions! + +## Contributors + +* [Charley Peng](https://github.com/chid) +* [Miguel Sánchez](https://github.com/MiguelSR) +* [Ryan Richmond](https://github.com/r-richmond) + +## Core Team + +* [Tyler Doyle](https://github.com/t8y8) +* [Russell Hay](https://github.com/RussTheAerialist) + diff --git a/README b/README deleted file mode 120000 index 42061c0..0000000 --- a/README +++ /dev/null @@ -1 +0,0 @@ -README.md \ No newline at end of file diff --git a/README.md b/README.md index 588fb14..beb0263 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,14 @@ # document-api-python +[![As-Is](https://img.shields.io/badge/Support%20Level-As--Is-e8762c.svg)](https://www.tableau.com/support-levels-it-and-developer-tools) -[![Build Status](https://travis-ci.org/tableau/document-api-python.svg?branch=master)](https://travis-ci.org/tableau/document-api-python) - -This repo contains Python source and example files for the Tableau Document API. We're just getting started and have plans to expand what you find here. Help us by submitting feedback, issues, and pull requests! Document API --------------- -The Document API provides a supported way to programmatically make updates to Tableau workbook and data source files. If you've been making changes to these file types by directly updating the XML--that is, by XML hacking--this SDK is for you :) +This repo contains Python source and example files for the Tableau Document API. +The Document API provides a useful but *unsupported* way to programmatically make updates to Tableau workbook and data source files. If you've been making changes to these file types by directly updating the XML--that is, by XML hacking--this SDK is for you :) Get help from other users on the [Tableau Community Forums](https://community.tableau.com/s/topic/0TO4T000000SF3sWAG/document-api). Features include: -- Support for 9.X, and 10.X workbook and data source files - - Including TDSX and TWBX files +- Support for TWB, TWBX, TDE and TDSX files starting roughly back to Tableau 9.x - Getting connection information from data sources and workbooks - Server Name - Username @@ -25,85 +23,9 @@ Features include: - Get all fields in a data source - Get all fields in use by certain sheets in a workbook -We don't yet support creating files from scratch, adding extracts into workbooks or data sources, or updating field information - - -###Getting Started -To use this SDK, you must have Python installed. You can use either 2.7.X or 3.3 and later. - -#### Installing the latest stable version (preferred) - -```text -pip install tableaudocumentapi -``` - -#### Installing From Source - -Download the `.zip` file that contains the SDK. Unzip the file and then run the following command: - -```text -pip install -e -``` - -#### Installing the Development Version from Git - -*Only do this if you know you want the development version, no guarantee that we won't break APIs during development* - -```text -pip install git+https://github.com/tableau/document-api-python.git@development -``` - -If you go this route, but want to switch back to the non-development version, you need to run the following command before installing the stable version: - -```text -pip uninstall tableaudocumentapi -``` - -###Basics -The following example shows the basic syntax for using the Document API to update a workbook: - -```python -from tableaudocumentapi import Workbook - -sourceWB = Workbook('WorkbookToUpdate.twb') - -sourceWB.datasources[0].connections[0].server = "MY-NEW-SERVER" -sourceWB.datasources[0].connections[0].dbname = "NEW-DATABASE" -sourceWB.datasources[0].connections[0].username = "benl" - -sourceWB.save() -``` - -With Data Integration in Tableau 10, a data source can have multiple connections. To access the connections simply index them like you would datasources. - -```python -from tableaudocumentapi import Workbook - -sourceWB = Workbook('WorkbookToUpdate.twb') - -sourceWB.datasources[0].connections[0].server = "MY-NEW-SERVER" -sourceWB.datasources[0].connections[0].dbname = "NEW-DATABASE" -sourceWB.datasources[0].connections[0].username = "benl" - -sourceWB.datasources[0].connections[1].server = "MY-NEW-SERVER" -sourceWB.datasources[0].connections[1].dbname = "NEW-DATABASE" -sourceWB.datasources[0].connections[1].username = "benl" - - -sourceWB.save() -``` - - -**Notes** - -- Import the `Workbook` object from the `tableaudocumentapi` module. -- To open a workbook, instantiate a `Workbook` object and pass the file name as the first argument. -- The `Workbook` object exposes a list of `datasources` in the workbook -- Each data source object has a `connection` object that supports a `server`, `dbname`, and `username` property. -- Save changes to the workbook by calling the `save` or `save_as` method. - +- It *doesn't* support creating files from scratch, adding extracts into workbooks or data sources, or updating field information. As of 2021, this SDK no longer supports Python 2. +For Hyper files, take a look at the [Tableau Hyper API](https://help.tableau.com/current/api/hyper_api/en-us/index.html). -###[Examples](Examples) +For more information, see the [Document API documentation](https://tableau.github.io/document-api-python) -The downloadable package contains several example scripts that show more detailed usage of the Document API. diff --git a/contributing.md b/contributing.md deleted file mode 100644 index 15fc5f8..0000000 --- a/contributing.md +++ /dev/null @@ -1,33 +0,0 @@ -# Contributing - -We welcome contributions to this project! - -Contribution can include, but are not limited to, any of the following: - -* File an Issue -* Request a Feature -* Implement a Requested Feature -* Fix an Issue/Bug -* Add/Fix documentation - -Contributions must follow the guidelines outlined on the [Tableau Organization](http://tableau.github.io/) page, though filing an issue or requesting -a feature do not require the CLA. - -## Issues and Feature Requests - -To submit an issue/bug report, or to request a feature, please submit a [github issue](https://github.com/tableau/document-api-python/issues) to the repo. - -If you are submiting a bug report, please provide as much information as you can, including clear and concise repro steps, attaching any necessary -files to assist in the repro. **Be sure to scrub the files of any potentially sensitive information. Issues are public.** - -For a feature request, please try to describe the scenario you are trying to accomplish that requires the feature. This will help us understand -the limitations that you are running into, and provide us with a use case to know if we've satisfied your request. - -## Fixes, Implementations, and Documentation - -For all other things, please submit a PR that includes the fix, documentation, or new code that you are trying to contribute. More information on -creating a PR can be found in the [github documentation](https://help.github.com/articles/creating-a-pull-request/) - -If the feature is complex or has multiple solutions that could be equally appropriate approaches, it would be helpful to file an issue to discuss the -design trade-offs of each solution before implementing, to allow us to collectively arrive at the best solution, which most likely exists in the middle -somewhere. diff --git a/contributing.md b/contributing.md new file mode 120000 index 0000000..e047e03 --- /dev/null +++ b/contributing.md @@ -0,0 +1 @@ +docs/docs/contributing.md \ No newline at end of file diff --git a/docs/.keep b/docs/.keep new file mode 100644 index 0000000..4e4b8f1 --- /dev/null +++ b/docs/.keep @@ -0,0 +1 @@ +Hello docs! \ No newline at end of file diff --git a/docs/Gemfile b/docs/Gemfile new file mode 100644 index 0000000..775d954 --- /dev/null +++ b/docs/Gemfile @@ -0,0 +1,3 @@ +source 'https://rubygems.org' +gem 'github-pages', group: :jekyll_plugins + diff --git a/docs/_config.yml b/docs/_config.yml new file mode 100644 index 0000000..5fefbee --- /dev/null +++ b/docs/_config.yml @@ -0,0 +1,17 @@ +# Site settings +title: Tableau Document API +email: github@tableau.com +description: Programmatically update your Tableau workbooks and data sources. +baseurl: "/document-api-python" +permalinks: pretty +defaults: + - + scope: + path: "" # Apply to all files + values: + layout: "default" + +# Build settings +markdown: kramdown +highlighter: rouge + diff --git a/docs/_includes/analytics.html b/docs/_includes/analytics.html new file mode 100644 index 0000000..0cdbad2 --- /dev/null +++ b/docs/_includes/analytics.html @@ -0,0 +1,7 @@ + + + diff --git a/docs/_includes/docs_menu.html b/docs/_includes/docs_menu.html new file mode 100644 index 0000000..eae8806 --- /dev/null +++ b/docs/_includes/docs_menu.html @@ -0,0 +1,17 @@ +
+ {% include search_form.html %} + +
diff --git a/docs/_includes/footer.html b/docs/_includes/footer.html new file mode 100644 index 0000000..1b50f51 --- /dev/null +++ b/docs/_includes/footer.html @@ -0,0 +1,19 @@ + + \ No newline at end of file diff --git a/docs/_includes/head.html b/docs/_includes/head.html new file mode 100644 index 0000000..858a412 --- /dev/null +++ b/docs/_includes/head.html @@ -0,0 +1,26 @@ + + + + + {% if page.title %}{{ page.title | escape }}{% else %}{{ site.title | escape }}{% endif %} + + + + + + + + + + + + + + + + + + +{% if jekyll.environment == "production" %}{% include analytics.html %}{% endif %} diff --git a/docs/_includes/header.html b/docs/_includes/header.html new file mode 100644 index 0000000..6e8e763 --- /dev/null +++ b/docs/_includes/header.html @@ -0,0 +1,29 @@ + diff --git a/docs/_includes/icon-github.svg b/docs/_includes/icon-github.svg new file mode 100644 index 0000000..4422c4f --- /dev/null +++ b/docs/_includes/icon-github.svg @@ -0,0 +1 @@ + diff --git a/docs/_includes/search_form.html b/docs/_includes/search_form.html new file mode 100644 index 0000000..41bb342 --- /dev/null +++ b/docs/_includes/search_form.html @@ -0,0 +1,7 @@ +
+ +
+ diff --git a/docs/_layouts/default.html b/docs/_layouts/default.html new file mode 100644 index 0000000..38ee020 --- /dev/null +++ b/docs/_layouts/default.html @@ -0,0 +1,34 @@ + + + + + {% include head.html %} + + + +
+ {% include header.html %} + + {% include footer.html %} +
+ + + diff --git a/docs/_layouts/docs.html b/docs/_layouts/docs.html new file mode 100644 index 0000000..d229de4 --- /dev/null +++ b/docs/_layouts/docs.html @@ -0,0 +1,31 @@ +--- +layout: docs +--- + + + + + + {% include head.html %} + + + +
+ {% include header.html %} + {% include docs_menu.html %} + +
+

{{ page.title }}

+ +
+ {{ content }} + {% include footer.html %} +
+
+ + + diff --git a/docs/_layouts/home.html b/docs/_layouts/home.html new file mode 100644 index 0000000..c2cf32f --- /dev/null +++ b/docs/_layouts/home.html @@ -0,0 +1,19 @@ +--- +layout: home +--- + + + + + {% include head.html %} + + + +
+ {% include header.html %} + {{ content }} + {% include footer.html %} +
+ + + diff --git a/docs/_layouts/search.html b/docs/_layouts/search.html new file mode 100644 index 0000000..96dbd94 --- /dev/null +++ b/docs/_layouts/search.html @@ -0,0 +1,43 @@ +--- +layout: search +--- + + + + + + {% include head.html %} + + + + + + + +
+ {% include header.html %} + {% include docs_menu.html %} + +
+

+
+
+

Loading search results...

+
+ + {% include footer.html %} +
+
+ + diff --git a/docs/assets/logo.png b/docs/assets/logo.png new file mode 100644 index 0000000..6076115 Binary files /dev/null and b/docs/assets/logo.png differ diff --git a/docs/css/api_ref.css b/docs/css/api_ref.css new file mode 100644 index 0000000..62da935 --- /dev/null +++ b/docs/css/api_ref.css @@ -0,0 +1,709 @@ + + + + + + + + + + <_.fcp.ObjectModelEncapsulateLegacy.false...relation connection='sqlserver.1nzmabo1alszdd1dqm0c11g0qr0m' name='TestData' table='[dbo].[TestData]' type='table' /> + <_.fcp.ObjectModelEncapsulateLegacy.true...relation connection='sqlserver.1nzmabo1alszdd1dqm0c11g0qr0m' name='TestData' table='[dbo].[TestData]' type='table' /> + + + Account Account Name + 130 + [Account Account Name] + [TestData] + Account Account Name + 1 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + SPAM + 1 + SPAM + 19 + Count + true + + "xml" + "SQL_C_DEFAULT" + + + + Account Number + 5 + [Account Number] + [TestData] + Account Number + 2 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Account Number Burst Out Account + 130 + [Account Number Burst Out Account] + [TestData] + Account Number Burst Out Account + 3 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Acct Name + 130 + [Acct Name] + [TestData] + Acct Name + 4 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Burst Out + 130 + [Burst Out] + [TestData] + Burst Out + 5 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Burst Out Join + 130 + [Burst Out Join] + [TestData] + Burst Out Join + 6 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Burst Out Set list + 5 + [Burst Out Set list] + [TestData] + Burst Out Set list + 7 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Burst Out View + 5 + [Burst Out View] + [TestData] + Burst Out View + 8 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Count JE Number + 5 + [Count JE Number] + [TestData] + Count JE Number + 9 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Entity ID + 130 + [Entity ID] + [TestData] + Entity ID + 10 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Filter + 5 + [Filter] + [TestData] + Filter + 11 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Fiscal Year + 130 + [Fiscal Year] + [TestData] + Fiscal Year + 12 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Flag + 11 + [Flag] + [TestData] + Flag + 13 + boolean + Count + false + + "SQL_BIT" + "SQL_C_BIT" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Flag__copy_ + 11 + [Flag__copy_] + [TestData] + Flag__copy_ + 14 + boolean + Count + false + + "SQL_BIT" + "SQL_C_BIT" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + FS Line + 5 + [FS Line] + [TestData] + FS Line + 15 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + FS Line Burst Out Account + 130 + [FS Line Burst Out Account] + [TestData] + FS Line Burst Out Account + 16 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Group By + 5 + [Group By] + [TestData] + Group By + 17 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Image + 130 + [Image] + [TestData] + Image + 18 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Note Line + 5 + [Note Line] + [TestData] + Note Line + 19 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Note Line Burst Out Account + 130 + [Note Line Burst Out Account] + [TestData] + Note Line Burst Out Account + 20 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Selection + 5 + [Selection] + [TestData] + Selection + 21 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + show + 130 + [show] + [TestData] + show + 22 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Show Cycle Based + 130 + [Show Cycle Based] + [TestData] + Show Cycle Based + 23 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Sub Class + 5 + [Sub Class] + [TestData] + Sub Class + 24 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + SubClass Burst Out Account + 130 + [SubClass Burst Out Account] + [TestData] + SubClass Burst Out Account + 25 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Type + 130 + [Type] + [TestData] + Type + 26 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Amount + 130 + [Amount] + [TestData] + Amount + 27 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Amount1 + 130 + [Amount1] + [TestData] + Amount1 + 28 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Count of Amount Calculation + 5 + [Count of Amount Calculation] + [TestData] + Count of Amount Calculation + 29 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Number of Records + 5 + [Number of Records] + [TestData] + Number of Records + 30 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Number of Records1 + 5 + [Number of Records1] + [TestData] + Number of Records1 + 31 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Select Burst Out + 5 + [Select Burst Out] + [TestData] + Select Burst Out + 32 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Select Transaction Analysis view + 5 + [Select Transaction Analysis view] + [TestData] + Select Transaction Analysis view + 33 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Sum Cy + 5 + [Sum Cy] + [TestData] + Sum Cy + 34 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Sum Py1 + 5 + [Sum Py1] + [TestData] + Sum Py1 + 35 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Sum Py2 + 5 + [Sum Py2] + [TestData] + Sum Py2 + 36 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Sum Py3 + 5 + [Sum Py3] + [TestData] + Sum Py3 + 37 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Sum Py4 + 5 + [Sum Py4] + [TestData] + Sum Py4 + 38 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Total Credits + 5 + [Total Credits] + [TestData] + Total Credits + 39 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Total Debits + 5 + [Total Debits] + [TestData] + Total Debits + 40 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + + + + + + + + + <_.fcp.ObjectModelTableType.true...column caption='TestData' datatype='table' name='[__tableau_internal_object_id__].[TestData_44D2C885FAEF453C846AC2CCD3577055]' role='measure' type='quantitative' /> + + + + + + + + + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-graph> + + + + + + + + + + + + + + + <_.fcp.GroupActionAddRemove.true...add-or-remove-marks value='assign' /> + + + + + + + + + + + <formatted-text> + <run>Selection</run> + </formatted-text> + + + + + + + + + + + + + + + + + + + + + + + ([federated.1df63xu0j2dvhd1e3sooz18pbrcc].[none:Calculation_88946136969252864:nk] / [federated.1df63xu0j2dvhd1e3sooz18pbrcc].[none:Burst Out Set list:nk]) + +
+ +
+ + + + <formatted-text> + <run>Set Result</run> + </formatted-text> + + + + + + + + + + + + + + + + + + + + + + + + <_.fcp.ObjectModelEncapsulateLegacy.false...relation connection='sqlserver.1nzmabo1alszdd1dqm0c11g0qr0m' name='TestData' table='[dbo].[TestData]' type='table' /> + <_.fcp.ObjectModelEncapsulateLegacy.true...relation connection='sqlserver.1nzmabo1alszdd1dqm0c11g0qr0m' name='TestData' table='[dbo].[TestData]' type='table' /> + + + Account Account Name + 130 + [Account Account Name] + [TestData] + Account Account Name + 1 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Account Number + 5 + [Account Number] + [TestData] + Account Number + 2 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Account Number Burst Out Account + 130 + [Account Number Burst Out Account] + [TestData] + Account Number Burst Out Account + 3 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Acct Name + 130 + [Acct Name] + [TestData] + Acct Name + 4 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Burst Out + 130 + [Burst Out] + [TestData] + Burst Out + 5 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Burst Out Join + 130 + [Burst Out Join] + [TestData] + Burst Out Join + 6 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Burst Out Set list + 5 + [Burst Out Set list] + [TestData] + Burst Out Set list + 7 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Burst Out View + 5 + [Burst Out View] + [TestData] + Burst Out View + 8 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Count JE Number + 5 + [Count JE Number] + [TestData] + Count JE Number + 9 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Entity ID + 130 + [Entity ID] + [TestData] + Entity ID + 10 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Filter + 5 + [Filter] + [TestData] + Filter + 11 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Fiscal Year + 130 + [Fiscal Year] + [TestData] + Fiscal Year + 12 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Flag + 11 + [Flag] + [TestData] + Flag + 13 + boolean + Count + false + + "SQL_BIT" + "SQL_C_BIT" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Flag__copy_ + 11 + [Flag__copy_] + [TestData] + Flag__copy_ + 14 + boolean + Count + false + + "SQL_BIT" + "SQL_C_BIT" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + FS Line + 5 + [FS Line] + [TestData] + FS Line + 15 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + FS Line Burst Out Account + 130 + [FS Line Burst Out Account] + [TestData] + FS Line Burst Out Account + 16 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Group By + 5 + [Group By] + [TestData] + Group By + 17 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Image + 130 + [Image] + [TestData] + Image + 18 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Note Line + 5 + [Note Line] + [TestData] + Note Line + 19 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Note Line Burst Out Account + 130 + [Note Line Burst Out Account] + [TestData] + Note Line Burst Out Account + 20 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Selection + 5 + [Selection] + [TestData] + Selection + 21 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + show + 130 + [show] + [TestData] + show + 22 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Show Cycle Based + 130 + [Show Cycle Based] + [TestData] + Show Cycle Based + 23 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Sub Class + 5 + [Sub Class] + [TestData] + Sub Class + 24 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + SubClass Burst Out Account + 130 + [SubClass Burst Out Account] + [TestData] + SubClass Burst Out Account + 25 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Type + 130 + [Type] + [TestData] + Type + 26 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Amount + 130 + [Amount] + [TestData] + Amount + 27 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Amount1 + 130 + [Amount1] + [TestData] + Amount1 + 28 + string + Count + 255 + true + true + + + "SQL_WVARCHAR" + "SQL_C_WCHAR" + "true" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Count of Amount Calculation + 5 + [Count of Amount Calculation] + [TestData] + Count of Amount Calculation + 29 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Number of Records + 5 + [Number of Records] + [TestData] + Number of Records + 30 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Number of Records1 + 5 + [Number of Records1] + [TestData] + Number of Records1 + 31 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Select Burst Out + 5 + [Select Burst Out] + [TestData] + Select Burst Out + 32 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Select Transaction Analysis view + 5 + [Select Transaction Analysis view] + [TestData] + Select Transaction Analysis view + 33 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Sum Cy + 5 + [Sum Cy] + [TestData] + Sum Cy + 34 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Sum Py1 + 5 + [Sum Py1] + [TestData] + Sum Py1 + 35 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Sum Py2 + 5 + [Sum Py2] + [TestData] + Sum Py2 + 36 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Sum Py3 + 5 + [Sum Py3] + [TestData] + Sum Py3 + 37 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Sum Py4 + 5 + [Sum Py4] + [TestData] + Sum Py4 + 38 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Total Credits + 5 + [Total Credits] + [TestData] + Total Credits + 39 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + Total Debits + 5 + [Total Debits] + [TestData] + Total Debits + 40 + real + Sum + 15 + true + + "SQL_FLOAT" + "SQL_C_DOUBLE" + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[TestData_44D2C885FAEF453C846AC2CCD3577055] + + + + + + + + + + + <_.fcp.ObjectModelTableType.true...column caption='TestData' datatype='table' name='[__tableau_internal_object_id__].[TestData_44D2C885FAEF453C846AC2CCD3577055]' role='measure' type='quantitative' /> + + + + + + + + + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-graph> + + + + + + + + + + + + + + + <_.fcp.GroupActionAddRemove.true...add-or-remove-marks value='assign' /> + + + + + + + + + + + <formatted-text> + <run>Selection</run> + </formatted-text> + + +
+ + + + + + + + + + + + + + + + + + + + ([federated.1df63xu0j2dvhd1e3sooz18pbrcc].[none:Calculation_88946136969252864:nk] / [federated.1df63xu0j2dvhd1e3sooz18pbrcc].[none:Burst Out Set list:nk]) + +
+ +
+ + + + <formatted-text> + <run>Set Result</run> + </formatted-text> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-graph> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +