atscaleinc/AtScale PS Template
Run any AtScale PS Template operation as a GitHub Actions composite step. Set the `operation` input to the operation name (e.g. extract-model-from-atscale).
View on GitHubTrust Signals
- Scorecard Score
- not yet scored
- Maintenance Recency
- Activelast commit Jun 25, 2026
- License
- Apache 2.0
Pinned Snippet
uses: atscaleinc/ps-utils@a4c97a9ba3e6b9873eb0ed29a3095410f85d799c # v2.0.0tags can be moved; commit SHAs can't. why a SHA?
Inputs
| name | description | required | default |
|---|---|---|---|
| operation | Name of the operation to run. One of: extract-model-from-atscale extract-model-from-sml generate-sml-from-connection generate-sml-from-ddl generate-namespace-from-model generate-metrics-from-model generate-tableau-from-namespace generate-excel-from-namespace generate-powerbi-from-namespace execute-sql-on-connection extract-ddl-from-connection generate-atscale-install-yaml atscale-list-data-sources atscale-create-data-source atscale-list-repos atscale-create-repo atscale-list-deployments atscale-deploy-catalog atscale-list-model-errors generate-ddl-from-atscale extract-data-shape-from-connection generate-ddl-from-data-shape generate-data-from-data-shape generate-data-from-data-shape-to-connection extract-queries-from-atscale execute-atscale-query-harness execute-query-on-connection generate-enhanced-query-results execute-run-analysis generate-queries-from-sml generate-queries-from-model extract-query-stats-from-atscale generate-sml-from-xml generate-shared-model-plan apply-shared-model-plan-option deploy-atscale-microk8s execute-web-services | yes | — |
| connection-file | Contents of the connections YAML file (store as a secret). Used by: extract-model-from-atscale, generate-sml-from-connection, generate-tableau-from-namespace, execute-sql-on-connection, extract-ddl-from-connection, extract-data-shape-from-connection, generate-data-from-data-shape-to-connection. | no | — |
| connection-name | Name of the connection within the connections file. Used by: extract-model-from-atscale, generate-sml-from-connection, generate-sml-from-ddl, generate-tableau-from-namespace, execute-sql-on-connection, extract-ddl-from-connection, extract-data-shape-from-connection, generate-data-from-data-shape-to-connection. | no | — |
| model | AtScale model identifier (cube name). | no | — |
| model-name | Model name used when reading or generating an SML project, or the model label/unique_name to validate. Used by: extract-model-from-sml, generate-sml-from-connection, generate-sml-from-ddl, atscale-list-model-errors. | no | — |
| output-model-file | Output path for the extracted model YAML (default: model.yaml). | no | model.yaml |
| sml-dir | Path to the SML project directory. Used by: extract-model-from-sml, atscale-deploy-catalog (required), atscale-list-model-errors (local mode — provide this OR repo-name/repo-id). | no | — |
| output-dir | Output directory. For generate-sml-from-connection / generate-sml-from-ddl: SML output directory (default: sml/). For generate-data-from-data-shape: CSV output directory (default: data/). | no | — |
| schema | Database schema to scope SML generation to. | no | — |
| catalog-name | Catalog (database) name for the SML project. | no | — |
| pii-severity | Minimum PII severity level to tag in generated SML (none/low/medium/high). | no | — |
| sample-size | Number of rows to sample per table for PII detection. | no | — |
| fact-tables | Comma-separated list of table names to treat as fact tables, overriding automatic classification. Used by: generate-sml-from-connection, generate-sml-from-ddl. | no | — |
| camel-case-files | Set to "true" to use camelCase of the source table name for dataset and dimension filenames. Default: raw table name. Used by: generate-sml-from-connection, generate-sml-from-ddl. | no | false |
| camel-case-measures | Set to "true" to use camelCase of the source column name for metric labels. Default: raw column name. Deprecated — use label-style instead. Used by: generate-sml-from-connection, generate-sml-from-ddl. | no | false |
| label-style | Label style for all SML labels: title-case (default), camel-case, or none | no | "" |
| min-hierarchies-per-dim | Minimum number of hierarchies a dimension must have to be included in the generated model. Dimensions below this threshold are dropped. Default: 1. Used by: generate-sml-from-connection, generate-sml-from-ddl. | no | 1 |
| max-hierarchies-per-dim | Maximum number of hierarchies to keep per dimension. Extra hierarchies beyond this limit are truncated. Default: 4. Used by: generate-sml-from-connection, generate-sml-from-ddl. | no | 4 |
| sml-config-file | Path to an SML style config file (sml.style.yaml) to read settings from. CLI inputs take priority over the file. Effective settings are always written to <output-dir>/sml.style.yaml after generation. Used by: generate-sml-from-connection, generate-sml-from-ddl. | no | — |
| ddl-file | Path to the DDL SQL file to parse for SML generation. | no | — |
| xml-file | Path to the AtScale XML project file (project_2_0 format) to convert. | no | — |
| connection-type | Database dialect for the connection file (e.g. "snowflake", "bigquery"). Used by: generate-sml-from-xml. | no | — |
| connection-db | Database or project name written into the connection file. When set, individual datasets use a plain table name instead of a nested db/schema/name object. Used by: generate-sml-from-xml. | no | — |
| connection-schema | Schema or dataset name written into the connection file. When set, individual datasets use a plain table name instead of a nested db/schema/name object. Used by: generate-sml-from-xml. | no | — |
| plan-file | Path to the option YAML file produced by generate-shared-model-plan. Used by: apply-shared-model-plan-option. | no | — |
| shared-dir | Directory where shared SML files (dimensions, datasets, models) will be written. Used by: apply-shared-model-plan-option. | no | — |
| remove-sources | When "true", delete local source copies after writing the shared file. Used by: apply-shared-model-plan-option. | no | — |
| input-dirs | Comma-separated list of SML output directories to analyse for sharing opportunities. Used by: generate-shared-model-plan. | no | — |
| threshold | Similarity threshold 0–1 for generate-shared-model-plan; lower values surface more options (default 0.5). Used by: generate-shared-model-plan. | no | — |
| max-per-subject | Maximum number of recommendations to emit per subject entity (dataset, dimension, or model pair). Prevents flooding output with near-duplicate options for the same entity (default 3). Used by: generate-shared-model-plan. | no | — |
| model-file | Path to the model YAML file (output of extract-model-from-atscale or extract-model-from-sml). Used by: generate-namespace-from-model, generate-metrics-from-model, generate-tableau-from-namespace, generate-queries-from-model. | no | — |
| title | Title for the generated namespace / Tableau workbook. | no | — |
| max-suggestions | Maximum number of analysis suggestions to generate (default: 25). | no | 25 |
| min-score | Minimum relevance score for included suggestions (default: 0.5). | no | 0.5 |
| include-tuples | Include multi-dimension suggestions (true/false, default: true). Used by: generate-metrics-from-model. | no | true |
| output-file | Output file path. For generate-namespace-from-model: namespace YAML output (omit to print to stdout). For generate-metrics-from-model: suggestions output (omit to print to stdout). For extract-ddl-from-connection: DDL output (omit to print to stdout). For generate-atscale-install-yaml: path for the generated values.yaml (default: values.yaml). For execute-query-on-connection: path to write query results (CSV for SQL, XML for XMLA). | no | — |
| namespace-file | Path to the namespace YAML file. | no | — |
| aliases-file | Path to an optional aliases YAML file mapping friendly names to model columns. Used by: generate-tableau-from-namespace, generate-excel-from-namespace, generate-powerbi-from-namespace. | no | — |
| tableau-version | Target Tableau version — 2024 or 2025 (default: 2025). | no | 2025 |
| target-file | Output path for the generated Tableau or Excel workbook. | no | — |
| target-folder | Output folder name for the generated Power BI project (written under output/). Used by: generate-powerbi-from-namespace. | no | powerbi |
| database | Database (catalog) name to embed in the SML connection file. | no | — |
| dialect | Database dialect. For generate-sml-from-ddl: e.g. snowflake, postgresql — auto-detected from filename if omitted; when snowflake, dataset table names are uppercased. For generate-ddl-from-data-shape: ansi (default), postgresql, snowflake, mysql, or bigquery. BigQuery omits PRIMARY KEY / FOREIGN KEY constraints. For generate-data-from-data-shape-to-connection: when omitted, the dialect is read from the connection configuration (sql.dialect); falls back to ansi. | no | — |
| dry-run | When "true", skips all side effects. - apply-shared-model-plan-option: no files written or deleted, actions are only logged. - execute-sql-on-connection: prints statements without executing them. | no | — |
| sql-file | Path to the SQL file to execute. | no | — |
| on-error | Behaviour when a statement fails — stop (default) or continue. | no | stop |
| sml-path | Path to the SML output directory or a model.yml file. Used by: extract-data-shape-from-connection. | no | — |
| target-fact-rows | Target row count when sampling large fact tables (default: 100000; 0 = no sampling). Used by: extract-data-shape-from-connection. | no | 100000 |
| target-column-rows | Target row count for measure column distribution sampling (default: 10000; 0 = no sampling). Used by: extract-data-shape-from-connection. | no | 10000 |
| tablesample | Use TABLESAMPLE SYSTEM for fact sampling (default: true). Set to false for databases that do not support TABLESAMPLE (e.g. MySQL). Used by: extract-data-shape-from-connection. | no | true |
| serial | When "true", profile dimensions one at a time instead of in parallel (default: false). Use when the database enforces a low per-user connection limit. Used by: extract-data-shape-from-connection. | no | false |
| preserve-meta-data | When "true": extract-data-shape-from-connection: stores original table/column names in the fingerprint metadata block. generate-ddl-from-data-shape, generate-data-from-data-shape, generate-data-from-data-shape-to-connection: uses the fingerprint metadata block to recreate tables with their original names. Only has effect on generation operations when the fingerprint was extracted with this flag set to "true". Default: "false". | no | false |
| input-file | Path to the data-shape.yaml fingerprint file. Used by: generate-ddl-from-data-shape, generate-data-from-data-shape, generate-data-from-data-shape-to-connection. | no | data-shape.yaml |
| scale-factor | Scale row and member counts by this factor (default: 1.0; use < 1 for smaller datasets). Used by: generate-data-from-data-shape, generate-data-from-data-shape-to-connection. | no | 1.0 |
| seed | Integer random seed for reproducible synthetic data output. Used by: generate-data-from-data-shape, generate-data-from-data-shape-to-connection. | no | — |
| create-tables | Emit CREATE TABLE statements before inserting data (default: false). Used by: generate-data-from-data-shape-to-connection. | no | false |
| drop-if-exists | DROP TABLE IF EXISTS before creating tables — implies create-tables (default: false). Used by: generate-data-from-data-shape-to-connection. | no | false |
| batch-size | Number of rows per INSERT statement (default: 500). Used by: generate-data-from-data-shape-to-connection. | no | 500 |
| query-file | JSON file produced by extract-queries-from-atscale, or a Gatling ingest CSV. Used by: execute-atscale-query-harness, execute-query-on-connection. | no | — |
| ingest-file | Ingest CSV (sampler_name,sql_text or sampler_name,atscale_query_id,sql_text). Used by: execute-atscale-query-harness. | no | — |
| task-file | Executor task YAML or JSON file (executor_tasks/*.yaml schema). Used by: execute-atscale-query-harness. | no | — |
| protocol | Query protocol: xmla or sql (default: xmla). Ignored in task-file mode. Used by: execute-atscale-query-harness, execute-query-on-connection. | no | xmla |
| query-name | Name of the specific query to execute from the query file (matches queryName / sampler_name). Used by: execute-query-on-connection. | no | — |
| concurrent-users | Number of parallel query workers (default: 1). Ignored in task-file mode. Used by: execute-atscale-query-harness. | no | 1 |
| throttle-ms | Minimum milliseconds between query dispatches per worker (default: 5). Used by: execute-atscale-query-harness. | no | 5 |
| run-id | Label stamped on every output row. Auto-generated (YYYY-MM-DD-XXXXXXXXXX) if omitted. Used by: execute-atscale-query-harness. | no | — |
| duration-minutes | Run for this many minutes cycling the query list (0 = one pass, default: 0). Used by: execute-atscale-query-harness. | no | 0 |
| redact | When "true", omits inbound query text from the output CSV (default: false). Used by: execute-atscale-query-harness. | no | false |
| annotate-queries | When "true" (default), prepends a /* {run_query_uuid, original_text_hash} */ comment to each executed query so AtScale's query log carries correlation fields. Set to "false" to send queries unmodified. Used by: execute-atscale-query-harness. | no | true |
| window-days | Number of days to look back in AtScale query history (default: 7). Used by: extract-query-stats-from-atscale. | no | 7 |
| start-date | Explicit window start in ISO-8601 format (e.g. 2025-01-01T00:00:00Z). Overrides window-days. Used by: extract-query-stats-from-atscale. | no | — |
| end-date | Explicit window end in ISO-8601 format. Defaults to now when start-date is set. Used by: extract-query-stats-from-atscale. | no | — |
| monthly | When "true", also generates a month-by-month breakdown CSV. Used by: extract-query-stats-from-atscale. | no | false |
| monthly-year | Calendar year for the monthly breakdown (e.g. 2025). Defaults to current year. Used by: extract-query-stats-from-atscale. | no | — |
| limit | Page size for the AtScale query history API. Used by: extract-query-stats-from-atscale. | no | — |
| db-schema | Database schema used when fetching execution plans from the target data source. Used by: generate-enhanced-query-results. | no | — |
| results-file | Path to the run-results CSV produced by execute-atscale-query-harness. Used by: generate-enhanced-query-results. | no | — |
| days | Look-back window in days when searching the AtScale query log (default: 7). Used by: generate-enhanced-query-results. | no | 7 |
| target-connection-name | Connection name within the connections file for the target data source. When provided, generate-enhanced-query-results connects to the target database and fetches an execution plan (EXPLAIN) for each outbound query, stored in the 'run_outbound_execution_plan' column. Supported dialects: snowflake (SYSTEM$EXPLAIN_PLAN_JSON), postgres (EXPLAIN FORMAT JSON), redshift (EXPLAIN). Used by: generate-enhanced-query-results. | no | — |
| file-a | Path to the first run log (execute-atscale-query-harness CSV) or enhanced output (generate-enhanced-query-results CSV). Used by: execute-run-analysis. | no | — |
| file-b | Path to the second run log or enhanced output to compare against file-a. Used by: execute-run-analysis. | no | — |
| join-key | Column to join queries across the two files: 'original_text_hash' (default) or 'original_atscale_query_id'. Used by: execute-run-analysis. | no | original_text_hash |
| duration-variance-pct | Percentage threshold for flagging duration differences. Pairs where |(b−a)/a|×100 exceeds this value are flagged. Default: 20. Used by: execute-run-analysis. | no | 20 |
| summary-file | Path to write the plain-text summary report. Used by: execute-run-analysis. | no | — |
| comparison-file | Path to write the row-by-row comparison CSV. Used by: execute-run-analysis. | no | — |
| outliers-file | Path to write the filtered outliers CSV containing only pairs flagged for a row-count mismatch or a duration outside the variance threshold. Same schema as comparison-file. Used by: execute-run-analysis. | no | — |
| xmla-output-file | Path to write the generated XMLA (MDX) query JSON file. Used by: generate-queries-from-sml, generate-queries-from-model. | no | — |
| sql-output-file | Path to write the generated SQL query JSON file. Used by: generate-queries-from-sml, generate-queries-from-model. | no | — |
| cube-name | Override the cube name used in MDX FROM and SQL FROM clauses. Defaults to the model label from the SML model file. Used by: generate-queries-from-sml, generate-queries-from-model. | no | — |
| tables | Comma-separated table names or wildcard patterns to extract (e.g. "Dim*,FactSales"). Omit to extract all tables in the schema. | no | — |
| case-insensitive | When "true", match table names case-insensitively. Default is case-sensitive matching. Used by: extract-ddl-from-connection. | no | — |
| hostname | Fully-qualified domain name (or IP) for the AtScale ingress and TLS certificate. Used by: generate-atscale-install-yaml. | no | — |
| tls-cert-file | Path to an existing PEM certificate file. When omitted a self-signed certificate is generated automatically. Used by: generate-atscale-install-yaml. | no | — |
| tls-key-file | Path to an existing PEM private key file. Required when tls-cert-file is set. Used by: generate-atscale-install-yaml. | no | — |
| license-key | AtScale license key to embed in values.yaml (atscale-entitlement.entitlement.licenseKey). If omitted the field is left blank; the key can be uploaded via the UI after install. Store as a secret and pass via secrets.ATSCALE_LICENSE_KEY. Used by: generate-atscale-install-yaml. | no | — |
| enable-mcp | Enable the AtScale MCP server sub-chart (atscale-mcp.enabled). Accepts true/false, yes/no, 1/0, on/off. Defaults to false. Used by: generate-atscale-install-yaml. | no | false |
| minimal | Emit additional Helm values that reduce the hardware footprint: disables telemetry, removes the Redis replica, and shrinks default PVC sizes. Accepts true/false, yes/no, 1/0, on/off, or standalone flag. Defaults to false. Used by: generate-atscale-install-yaml. | no | false |
| external-postgres | Wire AtScale to an externally-managed PostgreSQL instance instead of the bundled db sub-chart: disables the in-cluster database (global.atscale.db.enabled=false, db.enabled=false) and sets each service's externalDatabase block to read from Kubernetes secrets. Connection credentials (host/port/user/password) are NOT taken as inputs — stubbed secret manifests are emitted as a header comment for the operator to fill in and apply. Keycloak is pinned to a dedicated `keycloak` Postgres schema (KC_DB_SCHEMA) rather than `public`; the operator must create that schema before install (a CREATE SCHEMA statement is included in the emitted header comment). Accepts true/false, yes/no, 1/0, on/off, or standalone flag. Defaults to false. Used by: generate-atscale-install-yaml. | no | false |
| gatekeeper-compliant | Emit Helm values that satisfy common OPA Gatekeeper constraints: image.pullPolicy=Always and serviceAccount.create=true per subchart, plus resource requests/limits via global.resourcesPreset (poc when combined with minimal, otherwise prod). A header comment in the output lists residual constraints that require a namespace exemption. Accepts true/false, yes/no, 1/0, on/off, or standalone flag. Defaults to false. Used by: generate-atscale-install-yaml. | no | false |
| atscale-connection-name | Name of the AtScale connection entry in the connections file (must have an atscale: block). Used by: atscale-list-data-sources, atscale-create-data-source, atscale-list-repos, atscale-create-repo, atscale-list-deployments, atscale-deploy-catalog, atscale-list-model-errors, generate-ddl-from-atscale. | no | — |
| data-source-name | Name of the data source as registered in AtScale (matches the display name or connectionId). Used to resolve the connection ID for metadata queries. Used by: generate-ddl-from-atscale. | no | — |
| new-connection-name | Name of the SQL connection entry to register as a data source (must have a sql: block). Used by: atscale-create-data-source. | no | — |
| aggregate-schema | Schema (or BigQuery dataset) for aggregate table storage. Used by: atscale-create-data-source. | no | — |
| dw-name | Display name for the data warehouse in AtScale (max 128 chars). Defaults to new-connection-name when omitted. Used by: atscale-create-data-source. | no | — |
| connection-id | Logical connection ID embedded in SML files. Defaults to new-connection-name when omitted. Used by: atscale-create-data-source. | no | — |
| access-users | Comma-separated AtScale usernames to grant access to the data warehouse. Omit or pass empty string to grant access to the built-in 'everyone' group instead. Used by: atscale-create-data-source. | no | "" |
| aggregate-project-id | BigQuery only: GCP project ID for aggregate storage. Defaults to sql.project from the connection config. Used by: atscale-create-data-source. | no | — |
| insecure | Skip TLS certificate verification. Overrides the value in the connections file. Accepts true/false, yes/no, 1/0, on/off. Defaults to true. Used by: atscale-list-data-sources, atscale-create-data-source, atscale-list-repos, atscale-create-repo, atscale-list-deployments, atscale-deploy-catalog, atscale-list-model-errors, generate-ddl-from-atscale. | no | true |
| repo-name | Human-readable name for the git repository, or name of an AtScale-connected git repository. Used by: atscale-create-repo, atscale-deploy-catalog (provide this OR repo-id), atscale-list-model-errors (remote mode — provide this OR sml-dir/repo-id). | no | — |
| repo-url | Git remote URL (HTTPS or SSH) for the repository. Used by: atscale-create-repo. | no | — |
| repo-type | Repository type: 'catalog' (default) or 'global_settings'. Used by: atscale-create-repo. | no | catalog |
| visible-branches-pattern | Glob pattern controlling which branches are visible in the AtScale UI. Used by: atscale-create-repo. | no | — |
| default-branch | Default branch name (e.g. 'main'). Used by: atscale-create-repo. | no | — |
| project-name | Catalog project name to deploy as. Defaults to {catalog.unique_name}_{repo.defaultBranch}. Used by: atscale-deploy-catalog. | no | — |
| tableau-servers | Optional JSON array of Tableau servers to publish to after deployment. Example: '[{"name":"my-ts","sites":["Default"]}]' Used by: atscale-deploy-catalog. | no | — |
| repo-id | UUID of an AtScale-connected git repository. Used by: atscale-deploy-catalog (provide this OR repo-name), atscale-list-model-errors (remote mode — provide this OR sml-dir/repo-name). | no | — |
| branch | Branch name to check out when cloning in remote mode (defaults to repo default branch). Used by: atscale-list-model-errors. | no | — |
| microk8s-hostname | IP address or hostname of the MicroK8s server. | no | — |
| vm-admin-password | Password for the 'atscale' OS user on the MicroK8s server. Pass as a secret — supply via secrets.VM_ADMIN_PASSWORD in the caller workflow. | no | — |
| atscale-version | AtScale Helm chart version to deploy (default: 2026.1.0). | no | 2026.1.0 |
| port | Port for the GraphQL HTTP server. Used by: execute-web-services. | no | 4000 |
| host | Bind address for the GraphQL HTTP server. Used by: execute-web-services. | no | localhost |
Outputs
no outputs