myal
¡Hola a todos!
He configurado una suscripción a Power BI pro y una base de datos SQL en Azure. Mi objetivo es crear un conjunto de datos con DirectQuery desde esta base de datos SQL a través de la API REST de Power BI e incrustar informes en una aplicación web. La incrustación de informes con datos estáticos funciona bien, pero estoy atascado en la creación de ese conjunto de datos.
Cuando estoy llamando
POST https://api.powerbi.com/v1.0/myorg/groups/{group_id}/datasets
con un cuerpo (por ejemplo)
{ 'name': 'dataset test', 'defaultMode': 'AsOnPrem', 'tables': [], 'datasources': [ { 'name': 'datasource test', 'connectionString': 'data source={myserver}.database.windows.net;initial catalog={mydb};persist security info=True;' } ] }
Recibo este misterioso error como respuesta:
{"error":{"code":"FailedToParseConnectionStringError","pbi.error":{"code":"FailedToParseConnectionStringError","parameters":{},"details":[]}}}
He probado múltiples combinaciones diferentes para connectionString, cambiando parámetros, cambiando mayúsculas y minúsculas, agregando parámetros y todo, sin suerte. Tampoco puedo encontrar información sobre ese error. ¿Qué estoy haciendo mal?
Una cosa que podría interferir con esto es que no he configurado ninguna puerta de enlace para Power BI. Si eso es necesario en este caso (probablemente al menos en algún momento), ¿cuál es una buena manera de hacerlo? Depende de las aplicaciones web, debido a ciertas limitaciones, no puedo usar la versión de escritorio de Power BI o Power BI Gateway.
¿Es ese tipo de escenario de crear conjuntos de datos o conectar de alguna manera una base de datos correcta a cierto informe, que describí al principio, incluso posible a través de la API?
¡Gracias!
eligr
Hola.
La API que está intentando usar crea un conjunto de datos que apunta a Analysis Services.
Su fuente de datos es SQL (Azure).
No tenemos soporte para crear tales conjuntos de datos desde la API.
Tendrá que mover sus datos a Analysis Services, usar la API «Push data» o crear el modelo en PowerBI Desktop.
enlace al documento API:
https://msdn.microsoft.com/en-us/library/mt203562.aspx
Eli.
eligr
Hola.
La API que está intentando usar crea un conjunto de datos que apunta a Analysis Services.
Su fuente de datos es SQL (Azure).
No tenemos soporte para crear tales conjuntos de datos desde la API.
Tendrá que mover sus datos a Analysis Services, usar la API «Push data» o crear el modelo en PowerBI Desktop.
enlace al documento API:
https://msdn.microsoft.com/en-us/library/mt203562.aspx
Eli.
gowra1v
En respuesta a eligr
¿Es posible crear conjuntos de datos con el tipo de fuente de datos Archivo usando la API de Power BI? Si es posible, qué información de metadatos necesitamos alimentar en el cuerpo de la solicitud
tpaz
En respuesta a eligr
@eligr, ¿podría proporcionar un ejemplo sobre cómo crear un conjunto de datos para Analysis Services?
Recibí el mismo error «FailedToParseConnectionStringError».
Probé muchas combinaciones de propiedades y diferentes formatos de cadena de conexión.
Esta es mi solicitud:
POST https://api.powerbi.com/v1.0/myorg/groups/{groupId}/datasets
{ "name": "ApiTestAasDataset1", "isRefreshable": false, "isEffectiveIdentityRequired": true, "isEffectiveIdentityRolesRequired": false, "isOnPremGatewayRequired": false, "datasources": [ { "datasourceType": "AnalysisServices", "connectionDetails": { "server": "asazure://australiasoutheast.asazure.windows.net/myserver:rw", "database": "mydb" }, "connectionString": "Provider=MSOLAP;Data Source=asazure://australiasoutheast.asazure.windows.net/myserver;Initial Catalog=mydb;User ID=myuser@mydomain.com.au;Password=mypassword;Persist Security Info=True;Impersonation Level=Impersonate" } ], "defaultMode": "AsAzure" }
arnoc
En respuesta a tpaz
Yo también he estado luchando con esto. También probé su solicitud, agregando ‘Cube = Model’ a su connectiontring lo lleva (o al menos a mí con el cuerpo de su solicitud) al punto en el que estoy atascado, recibiendo errores 401 …
He creado un hilo separado para este problema aquí que, con suerte, nos ayudará a resolver ambos problemas.
Anónimo
En respuesta a eligr
Hola,
por favor @eligr ¿puede aclarar si tener una puerta de enlace es útil para crear una fuente de datos a través de la API REST? que se conecta a SQL Azure o Spark en HDInsight en modo de consulta directa?
Si no es así, ¿hay algún artículo de documentos, blogs u otras fuentes de Microsoft que lo explique?
Gracias por adelantado.
Luca
eligr
En respuesta a Anónimo
Hola Luca.
Esta pregunta no parece relacionada con este hilo.
De todos modos, para conectarse a SQL Azure o Spark en HDInsight en modo de consulta directa, use Power BI Desktop.
Después de cargar el pbix en Power BI, puede usar las API para cambiar / establecer las credenciales usando:
https://docs.microsoft.com/en-us/rest/api/power-bi/datasets/getgatewaydatasourcesingroup y https://docs.microsoft.com/en-us/rest/api/power-bi/gateways/updatedatasource.
Eli.
alfdagos
En respuesta a eligr
¡Hola @eligr!
Si quiero crear el conjunto de datos de consulta directa para HDInsight con RestAPI, ¿no es realmente posible?
RestAPI getDatasource devuelve este resultado para una fuente de datos creada con PowerBI Desktop:
{ "@ odata.context": "http://api.powerbi.com/v1.0/myorg/$metadata#gatewayDatasources", "value": [ { "id": "8339457f-c99b-4670-b288-d739596863ed", "gatewayId": "620b029e-4a25-4c9f-8ef5-b94712b62dbd", "datasourceType": "Extension", "connectionDetails": "{"extensionDataSourceKind":"Spark","extensionDataSourcePath":"Azure/testpbi.azurehdinsight.net"}", "credentialType": "Basic", "credentialDetails": { "useEndUserOAuth2Credentials": false } ] }
Gracias por el apoyo y saludos cordiales,
Alfredo.
eligr
En respuesta a alfdagos
Hola.
No se admite la creación de conjuntos de datos DQ a través de las API REST, HDInsight u otro.
Para crear dicho conjunto de datos, debe usar Power BI Desktop.
Eli.
alfdagos
En respuesta a eligr
¡Muchas gracias @eligr!
Supongamos que una vez que he creado el conjunto de datos con PowerBI Desktop, quiero duplicarlo y modificarlo para que apunte a otras tablas de la misma base de datos o la misma instancia de HDInsight (naturalmente con el mismo esquema ..). ¿Puedes explicarme los pasos correctos para hacer con la API Rest si es posible?
¡Muchas gracias por la rápida repetición!
Atentamente,
Alfredo.
Vrushali
En respuesta a eligr
Hola, estoy tratando de crear un conjunto de datos usando postgres
fuentes de datos»:[
{
«name»:»postgres»,
«connectionString»:»Data Source=postgresql://localhost/Postgres?user=other&password=secret;Initial Catalog=Postgres;Cube=Model»
}
]
Y obtengo una respuesta 202 en el cartero, pero en el escritorio PowerBi hay un problema
«El servidor de la puerta de enlace de datos no puede acceder a esta fuente de datos:»postgresql: // localhost / Postgres? usuario = otro & contraseña = secreto; «
nishhtg
En respuesta a Vrushali
El mismo error para mí también, obteniendo 202 en lugar de 201 para la creación del conjunto de datos.
esto es algo mal con la cadena de conexión para postgres.
ya que es muy difícil entender y descubrir exactamente cuál debe ser la estructura de una fuente de datos de Postgres.
He probado varios patrones para la cadena de conexión sin suerte.
«fuentes de datos»:[
{
«name»:»postgres»,
«connectionString»:»Provider=ODBC;Data Source=postgresql://localhost/postgres?user=postgres&password=12345&ssl=prefer;Initial Catalog = postgres; Cube=Model;»
}
]
«fuentes de datos»:[
{
«name»:»postgres»,
«connectionString»:»Server=localhost;Port=5432;Database=postgres;User Id=postgres;Password=root;»
}
]
}
fuentes de datos»:[
{
«name»:»postgres»,
«connectionString»:»Data Source=postgresql://localhost/Postgres?user=other&password=secret;Initial Catalog=Postgres;Cube=Model»
OR
Data Source=jdbc:postgresql://localhost/Postgres?user=fred&password=secret&ssl=true
}
]
Además, los términos CUBO y CATÁLOGO INICIAL, PROVEEDOR, estas claves tienen muy menos información disponible en la red para la cadena de conexión de Postgres. Una explicación detallada de la cadena de conexión de Postgres sería útil aquí.
nishhtg
En respuesta a Vrushali
El mismo problema conmigo también,
incluso probé varias combinaciones para la cadena de conexión de postgres, pero solo se devuelve 202 en lugar de 201.
{
«nombre»: «postgres»,
«defaultMode»: «AsOnPrem»,
«mesas»:
[
{«name»: «Postgres»,»tables»:
[
{«name»: «Product», «columns»:
[
{ «name»: «ProductID», «dataType»: «Int64»},
{ «name»: «Name», «dataType»: «string»},
{ «name»: «Category», «dataType»: «string»},
{ «name»: «IsCompete», «dataType»: «bool»},
{ «name»: «ManufacturedOn», «dataType»: «DateTime»}
]
}
]
}
],
«fuentes de datos»:[
{
«name»:»postgres»,
«connectionString»:»Server=localhost;Port=5432;Database=postgres;User Id=postgres;Password=root;»
}
]
}
fuentes de datos»:[
{
«name»:»postgres»,
«connectionString»:»Data Source=postgresql://localhost/Postgres?user=other&password=secret;Initial Catalog=Postgres;Cube=Model»
OR
Data Source=jdbc:postgresql://localhost/Postgres?user=fred&password=secret&ssl=true
}
]
«fuentes de datos»:[
{
«name»:»postgres»,
«connectionString»:»Provider=ODBC;Data Source=postgresql://localhost/postgres?user=postgres&password=12345&ssl=prefer;Initial Catalog = postgres; Cube=Model;»
}
]
Además, no se ofrece ninguna explicación sobre CUBE, INITIAL CATALOG y Provider Keys con respecto a la cadena de conexión de postgres.
Por favor, avíseme si alguien ha encontrado una solución para esto.
Gregorybor
En respuesta a nishhtg
HOLA,
Se deben definir tablas al publicar conjuntos de datos Push, PushStreaming o Streaming.
Pero no al definir Conjuntos de datos AsOnPrem.
Greg.