krypto6969
Hola,
Recibo este error al intentar usar una consulta directa
Pero cuando ejecuto mi proceso en SSMS está bien, no puedo entender por qué a POwer BI no le gusta.
Aquí está la declaración que estoy tratando de usar:
DECLARE @CLAIMS int DECLARE @from_date_entered date DECLARE @to_date_entered date ---------------------------- SET @from_date_entered = GETDATE() SET @to_date_entered = GETDATE() --SET @from_date_entered = N'03/16/2016' --SET @to_date_entered = N'03/16/2016' ---------------------------- SELECT @CLAIMS = batchtype_id FROM batchtype WHERE batchtype_ud = 'CLAIMS' DECLARE @begin smalldatetime SELECT @begin = CONVERT(smalldatetime, @from_date_entered) DECLARE @end smalldatetime SELECT @end = DATEADD (dd,1,CONVERT(smalldatetime, @to_date_entered)) DECLARE @begind smalldatetime SELECT @begind = CONVERT(smalldatetime, @from_date_entered) DECLARE @endd smalldatetime SELECT @endd = CONVERT(smalldatetime, @to_date_entered) DECLARE @CompanyName varchar(100) SELECT @CompanyName = environment_info.company_name FROM environment_info IF OBJECT_ID('tempdb..#rpt_data') IS NOT NULL begin drop table #rpt_data end CREATE TABLE #rpt_data (CompanyName varchar(100) NULL, Batch char(3) NULL, UserName varchar(35) NULL, SQLUserName varchar (25) NULL, claim_form_type_id int null, Claim_type varchar (10) NULL, status_type varchar(15) NULL, each int NULL, member_last varchar(35) NULL, fromdate smalldatetime NULL, todate smalldatetime NULL) INSERT INTO #rpt_data ( CompanyName, Batch, UserName, SQLUserName, claim_form_type_id, Claim_type, status_type, each, member_last, fromdate, todate ) --countofentered as (select ) SELECT DISTINCT @CompanyName, substring(batch_user.batch, 1, 3) as batch_init, batch_user.batch as user_name, batch_user.batch_sql_user_name, claim_form_type_id,--altered 11/25/02 null,--altered 11/25/02 claim_status.claim_status_ud, claim.claim_id, claim.member_last_name as member_last, @begind, @endd FROM batch_user inner join batchtype on batch_user.batchtype_id = batchtype.batchtype_id, claim inner join claim_status on claim.claim_status_id = claim_status.claim_status_id WHERE len(batch_user.batch) = 3 and substring(claim.claim_ud, 9, 3) = batch_user.batch and (claim.date_created < @end AND claim.date_created >= @begin) GROUP BY claim.claim_form_type_id, batch_user.batch_sql_user_name, batch_user.batch, claim_status.claim_status_ud, claim.member_last_name, claim.claim_id INSERT INTO #rpt_data ( CompanyName, Batch, UserName, SQLUserName, claim_form_type_id, Claim_type, status_type, each, member_last, fromdate, todate ) SELECT DISTINCT @CompanyName, substring(batch_user.batch, 1, 2) as batch_init, batch_user.batch as user_name, batch_user.batch_sql_user_name, claim_form_type_id, null,--altered claim_status.claim_status_ud,--altered claim.claim_id, claim.member_last_name as member_last, @begind, @endd FROM batch_user inner join batchtype on batch_user.batchtype_id = batchtype.batchtype_id, claim inner join claim_status on claim.claim_status_id = claim_status.claim_status_id WHERE len(batch_user.batch) = 2 and substring(claim.claim_ud, 9, 2) = batch_user.batch and (claim.date_created < @end AND claim.date_created >= @begin) GROUP BY claim.claim_form_type_id, batch_user.batch_sql_user_name, batch_user.batch, claim_status.claim_status_ud, claim.member_last_name,claim.claim_id INSERT INTO #rpt_data ( CompanyName, Batch, UserName, SQLUserName, claim_form_type_id, Claim_type, status_type, each, member_last, fromdate, todate ) SELECT DISTINCT @CompanyName, substring(batch_user.batch, 1, 1) as batch_init, batch_user.batch as user_name, batch_user.batch_sql_user_name, null,--altered claim_status.claim_status_ud,--altered claim_status.claim_status_ud, claim.claim_id, claim.member_last_name as member_last, @begind, @endd FROM batch_user inner join batchtype on batch_user.batchtype_id = batchtype.batchtype_id, claim inner join claim_status on claim.claim_status_id = claim_status.claim_status_id WHERE len(batch_user.batch) = 1 and substring(claim.claim_ud, 9, 1) = batch_user.batch and (claim.date_created < @end AND claim.date_created >= @begin) GROUP BY claim.claim_form_type_id, batch_user.batch_sql_user_name, batch_user.batch, claim_status.claim_status_ud, claim.member_last_name,claim.claim_id update #rpt_data set claim_type="HCFA" where (claim_form_type_id = 2 or claim_form_type_id is null) update #rpt_data set claim_type="UB92" where (claim_form_type_id = 1) SELECT CompanyName as Company, Batch, USERNAME as [User Name], SQLUserName as [System User Name], --claim_form_type_id as [Claim Form Type], CASE WHEN [claim_form_type_id] IS NULL THEN ('N/A') END as [Claim Form Type], Claim_type as [Claim Type],--altered status_type as [Status Type], each as [Each], member_last as [Member Name], fromdate as [From Date], todate as [To Date], CASE WHEN [Status_Type] = 'Entered' THEN 1 ELSE 0 END AS Entered, CASE WHEN [Status_Type] = 'Approved' THEN 1 ELSE 0 END AS Approved, CASE WHEN [Status_Type] = 'Pending' THEN 1 ELSE 0 END AS Pending FROM #rpt_data
Anónimo
Hola,
Tuve el mismo problema con esta consulta:
dejar
UserNameSQL = Sql.Database («Nombre del servidor», «Nombre de la base de datos»,[Query=»EXEC [proj].[TestOrganisation2]»])
en
UserNameSQL
pero lo resolví cambiándolo a esto:
dejar
UserNameSQL = () =>
Sql.Database («Nombre del servidor», «Nombre de la base de datos»,[Query=»EXEC [proj].[TestOrganisation2]»])
en
UserNameSQL
Espero que pueda ayudarlos 🙂
Saludos
vissvess
En respuesta a Anónimo
Pero, ¿qué es esto en el caso de una consulta directa …?
Esto convertir la consulta en función y luego invocar a una consulta y cargar es convertir la consulta al modo de importación.
¿Qué debo hacer para la consulta directa?
Anónimo
En respuesta a Anónimo
¡Brillante! ¡Gracias!
v-sihou-msft
@ krypto6969
Power BI Desktop tiene problemas para analizar consultas en el modo de consulta directa. Siempre resuelve la declaración SQL de entrada del front-end como una tabla derivada, de modo que declaraciones como DECLARE, CTE causarán un error de sintaxis. Hemos informado de este problema internamente. Consulte los hilos similares a continuación:
http://community.powerbi.com/t5/Desktop/Why-is-DECLARE-not-supported-Error/mp/40983#U40983
http://community.powerbi.com/t5/Desktop/Custom-query-with-CTE-not-supported-bug/mp/41395#U41395
Saludos,
Seth_C_Bauer
@ krypto6969 Es mejor no crear varios hilos con la misma pregunta; si realmente lo necesita, agregue el enlace a los hilos anteriores que ha creado para que otros no comiencen con las mismas recomendaciones que ya haya recibido.
Para vincular a su otro hilo con la misma pregunta: http://community.powerbi.com/t5/Desktop/Can-t-use-Temp-Tables-really/mp/45167#M17506
¿Probaste las soluciones recomendadas allí? Obviamente, existe una limitación a lo que puede, o cómo puede consultar SQL usando Direct Query. Los procedimientos almacenados no parecen funcionar, ni tampoco crear objetos temporales y poblarlos.
Existen otras soluciones a su problema. 1) importar usando las recomendaciones en el otro hilo 2) Reestructurar su consulta para no usar tablas temporales (escribir subconsultas, usar CTE’s, etc.)
Habiber
Intente dividir la consulta en partes y ejecutarla a través de PowerBI una a la vez, para identificar dónde está ocurriendo exactamente el problema.