Technote: Integration PowerQuery & MS SSAS Tabular

von

Seit Kompatibilitätsgrad 1400 (SQL Server 2017) ist SQL Server Analysis Services (SSAS) Tabular mit der "GetData" Funktionalität ausgestattet. Hinter "GetData" verbirgt sich, wie auch schon zuvor in Excel und Power BI, die PowerQuery Komponente, die eine Vielzahl von Funktionen zur Anbindung von Datenquellen inkl. Transformationen der Daten bereitstellt.

Zuvor angelegte Datenquellen werden nun als "Legacy Datasources" deklariert, sind dennoch nach wie vor nutzbar.

Es gibt keine mir bekannte Funktion, die eine Legacy Datasource in eine PowerQuery Datasource umwandelt.

Man kann die entsprechenden Stellen jedoch mit überschaubarem Aufwand direkt in der Modell-Datei mit Notepad++ ändern.

Im folgenden zwei Beispiele, wie sich der Inhalt (insbesondere die Definitionen der „dataSources“ und der „partitions“) der SSAS Tabular Modell-Datei ändert, wenn man von Legacy Datasources zu PowerQuery Datasources migriert (@servername und @databasename sind entsprechend durch den Servernamen und den Datenbanknamen zu ersetzen):

Legacy Datasources (Pre SQL 2017; Kompatibilitätsgrad <1400)

Auszug aus der .bim-Datei mit Legacy Datasource:
{
	"…": "…",
	"dataSources": [
		{
			"name": "DWH",
			"connectionString": "Provider=SQLNCLI11;Data Source=@servername;Initial Catalog=@databasename;Integrated Security=SSPI;Persist Security Info=false",
			"impersonationMode": "impersonateServiceAccount",
			"annotations": [
				{
					"name": "ConnectionEditUISource",
					"value": "SqlServer"
				}
			]
		}
	],
	"tables": [
		{
			"name": "dim_Date",
			"dataCategory": "Time",
			"columns": [
				{
					"…": "…"
				}
			],
			"partitions": [
				{
					"name": "dim_Date",
					"dataView": "full",
					"source": {
						"type": "query",
						"query": " SELECT [DVL_SSAS_DWH].[dim_Date].* FROM [DVL_SSAS_DWH].[dim_Date] ",
						"dataSource": "DWH"
					}
				}
			],
			"hierarchies": [
				{
					"…": "…"
				}
			]
		}
	],
	"…": "…"
}

PowerQuery Datasources (auch bekannt als Funktion "GetData"; Post SQL 2017; Kompatibilitätsgrad >=1400)

Auszug aus der .bim-Datei mit PowerQuery Datasource:
{
	"…": "…",
	"dataSources": [
		{
			"type": "structured",
			"name": "DWH",
			"connectionDetails": {
				"protocol": "tds",
				"address": {
					"server": "@servername",
					"database": "@databasename"
				},
				"authentication": null,
				"query": null
			},
			"credential": {
				"AuthenticationKind": "ServiceAccount",
				"kind": "SQL",
				"path": "@servername;@databasename",
				"EncryptConnection": false
			}
		}
	],
	"tables": [
		{
			"name": "dim_Date",
			"dataCategory": "Time",
			"columns": [
				{
					"…": "…"
				}
			],
			"partitions": [
				{
					"name": "dim_Date",
					"dataView": "full",
					"source": {
						"type": "m",
						"expression": [
							"let",
							"    Source = #\"DWH\",",
							"    DVL_SSAS_DWH_dim_Date = Source{[Schema=\"DVL_SSAS_DWH\",Item=\"dim_Date\"]}[Data]",
							"in",
							"    DVL_SSAS_DWH_dim_Date"
						]
					}
				}
			],
			"hierarchies": [
				{
					"…": "…"
				}
			]
		}
	],
	"…": "…"
}

Zurück