Forum Discussion
Filter SQL Query upon Import
- 7 years ago
Hi Anonymous
your query should be something like this:
= Sql.Database("XXXXX", [Query= "SELECT DIS.Location_cd , DPR.ProductGroup_nm , DPR.ProductGroup_cd , DPR.ProductSequence_nm , DPR.ProductSequence_cd , DDT.Fiscal_year_nr , DDT.Fiscal_month_year_nr , DDT.Fiscal_week_year_nr --METRICS , sum(FID.Units) AS Units , sum(FID.Sales) AS Sales , sum(FID.GL_Gross_Profit_FIFO) AS GL_Gross_Profit_FIFO , sum(FID.Standard_Gross_Profit) AS Standard_Gross_Profit -- select count(1) FROM DW.vwFact_InvoiceDetail(NOLOCK) FID INNER JOIN DW.vwDim_Currency DCR ON DCR.CurrencyKey = FID.CurrencyKey INNER JOIN DW.vwDim_InvoiceDetail DID ON DID.InvoiceDate_id = FID.InvoiceDate_id AND DID.InvoiceDetail_id = FID.InvoiceDetail_id INNER JOIN DW.vwDim_Date DDT ON DDT.Date_id = FID.InvoiceDate_id INNER JOIN DW.vwDim_Organization DOR ON DOR.Organization_id = FID.Organization_id INNER JOIN DW.vwDim_Product DPR ON DPR.Product_id = FID.Product_id INNER JOIN DW.vwDim_InvoiceHeader DIH ON DIH.Invoice_id = FID.Invoice_id INNER JOIN DW.vwDim_Customer_OLAP DIB ON DIB.Customer_id = FID.BillCustomer_id AND DIB.Customer_Class_cd != '28' INNER JOIN DW.vwDim_Customer_OLAP DIS ON DIS.Customer_id = FID.ShipCustomer_id WHERE DID.Revenue_GL_no IN ( '40001' ,'40002' ,'40003' ,'40004' ,'40005' ,'40006' ,'40007' ,'40008' ,'40101' ,'40102' ,'40103' ,'40104' ,'40105' ,'40107' ,'40108' ,'50001' ,'50002' ,'50003' ,'50005' ,'50101' ,'50102' ,'50103' ,'50105' ) AND DID.Record_cd IN ('B','C','D','G','N') AND DIH.Preacquisition_flg ='N' AND DOR.Reporting_Division_cd IN ('D01','D99') AND DIS.Customer_Channel_nm ='CORE' AND DDT.Fiscal_year_nr IN (2019) -- AND ddt.Fiscal_week_year_nr = 201712 AND DIS.Location_cd IN (" & TheCommaDelimitedValuesShownInMyFirstReply & ") GROUP BY DIS.Location_cd , DPR.ProductGroup_nm , DPR.ProductGroup_cd , DPR.ProductSequence_nm , DPR.ProductSequence_cd , DDT.Fiscal_year_nr , DDT.Fiscal_month_year_nr , DDT.Fiscal_week_year_nr"])
Anonymous
You select the Customer column from the filter table and then fo to the Transform tab within Power Query and choose 'Convert to list'. Then You wrap the resulting formula with Text.Combine.
If the Customer ID on your side is text and not an integer then you need to add single quote as a delimiter
if a number then you do = Text.Combine(#"Changed Type"[Customer], ",")
if text then you do = "'" & Text.Combine(#"Changed Type"[Customer], "','") & "'"
Thank you for your extra detail! I've got it loaded to a wrapped list like your instructions have it.
Is the syntax to pass it to the import portion in DAX or SQL? Currently, I'm connected with a SQL Server Database with the SQL Statement loading it in. I tried to add the statement but wasn't getting it to work for me.
SQL Script Below-
My Query Name for the filter = TP_Filter_SQL
My List Column = = Text.Combine( #"Removed Columns"[LocationNumber], ",")
SELECT DIS.Location_cd
, DPR.ProductGroup_nm
, DPR.ProductGroup_cd
, DPR.ProductSequence_nm
, DPR.ProductSequence_cd
, DDT.Fiscal_year_nr
, DDT.Fiscal_month_year_nr
, DDT.Fiscal_week_year_nr
--METRICS
, sum(FID.Units) AS Units
, sum(FID.Sales) AS Sales
, sum(FID.GL_Gross_Profit_FIFO) AS GL_Gross_Profit_FIFO
, sum(FID.Standard_Gross_Profit) AS Standard_Gross_Profit -- select count(1)
FROM DW.vwFact_InvoiceDetail(NOLOCK) FID
INNER JOIN DW.vwDim_Currency DCR ON DCR.CurrencyKey = FID.CurrencyKey
INNER JOIN DW.vwDim_InvoiceDetail DID ON DID.InvoiceDate_id = FID.InvoiceDate_id AND DID.InvoiceDetail_id = FID.InvoiceDetail_id
INNER JOIN DW.vwDim_Date DDT ON DDT.Date_id = FID.InvoiceDate_id
INNER JOIN DW.vwDim_Organization DOR ON DOR.Organization_id = FID.Organization_id
INNER JOIN DW.vwDim_Product DPR ON DPR.Product_id = FID.Product_id
INNER JOIN DW.vwDim_InvoiceHeader DIH ON DIH.Invoice_id = FID.Invoice_id
INNER JOIN DW.vwDim_Customer_OLAP DIB ON DIB.Customer_id = FID.BillCustomer_id AND DIB.Customer_Class_cd != '28'
INNER JOIN DW.vwDim_Customer_OLAP DIS ON DIS.Customer_id = FID.ShipCustomer_id
WHERE DID.Revenue_GL_no IN (
'40001' ,'40002' ,'40003' ,'40004' ,'40005' ,'40006'
,'40007' ,'40008' ,'40101' ,'40102' ,'40103' ,'40104'
,'40105' ,'40107' ,'40108' ,'50001' ,'50002' ,'50003'
,'50005' ,'50101' ,'50102' ,'50103' ,'50105'
)
AND DID.Record_cd IN ('B','C','D','G','N')
AND DIH.Preacquisition_flg ='N'
AND DOR.Reporting_Division_cd IN ('D01','D99')
AND DIS.Customer_Channel_nm ='CORE'
AND DDT.Fiscal_year_nr IN (2019)
GROUP BY DIS.Location_cd
, DPR.ProductGroup_nm
, DPR.ProductGroup_cd
, DPR.ProductSequence_nm
, DPR.ProductSequence_cd
, DDT.Fiscal_year_nr
, DDT.Fiscal_month_year_nr
, DDT.Fiscal_week_year_nr
- LivioLanzo7 years ago
Solution Sage
Anonymous
what is the Power Query code which import the sql table?
- Anonymous7 years agoNot applicable
I started looking and found the translation from SQL into DAX. When you go to the Query > click into Source on steps and shows up in the top row.
In my import, "Location_cd" is "Customer #" I want to filter on.
See below:
= Sql.Database("12345, "XXYYZZ", [Query="SELECT DIS.Location_cd#(lf), DPR.ProductGroup_nm#(lf), DPR.ProductGroup_cd#(lf), DPR.ProductSequence_nm#(lf), DPR.ProductSequence_cd#(lf), DDT.Fiscal_year_nr#(lf), DDT.Fiscal_month_year_nr#(lf), DDT.Fiscal_week_year_nr#(lf)--METRICS#(lf), sum(FID.Units) AS Units#(lf), sum(FID.Sales) AS Sales#(lf), sum(FID.GL_Gross_Profit_FIFO) AS GL_Gross_Profit_FIFO#(lf), sum(FID.Standard_Gross_Profit) AS Standard_Gross_Profit -- select count(1) #(lf)FROM DW.vwFact_InvoiceDetail(NOLOCK) FID #(lf)INNER JOIN DW.vwDim_Currency DCR ON DCR.CurrencyKey = FID.CurrencyKey#(lf)INNER JOIN DW.vwDim_InvoiceDetail DID ON DID.InvoiceDate_id = FID.InvoiceDate_id AND DID.InvoiceDetail_id = FID.InvoiceDetail_id#(lf)INNER JOIN DW.vwDim_Date DDT ON DDT.Date_id = FID.InvoiceDate_id#(lf)INNER JOIN DW.vwDim_Organization DOR ON DOR.Organization_id = FID.Organization_id#(lf)INNER JOIN DW.vwDim_Product DPR ON DPR.Product_id = FID.Product_id#(lf)INNER JOIN DW.vwDim_InvoiceHeader DIH ON DIH.Invoice_id = FID.Invoice_id#(lf)INNER JOIN DW.vwDim_Customer_OLAP DIB ON DIB.Customer_id = FID.BillCustomer_id AND DIB.Customer_Class_cd != '28'#(lf)INNER JOIN DW.vwDim_Customer_OLAP DIS ON DIS.Customer_id = FID.ShipCustomer_id#(lf)WHERE DID.Revenue_GL_no IN (#(lf) '40001' ,'40002' ,'40003' ,'40004' ,'40005' ,'40006'#(lf) ,'40007' ,'40008' ,'40101' ,'40102' ,'40103' ,'40104'#(lf) ,'40105' ,'40107' ,'40108' ,'50001' ,'50002' ,'50003'#(lf) ,'50005' ,'50101' ,'50102' ,'50103' ,'50105'#(lf) )#(lf)AND DID.Record_cd IN ('B','C','D','G','N') #(lf)AND DIH.Preacquisition_flg ='N'#(lf)AND DOR.Reporting_Division_cd IN ('D01','D99')#(lf)AND DIS.Customer_Channel_nm ='CORE'#(lf)AND DDT.Fiscal_year_nr IN (2019)#(lf)-- AND ddt.Fiscal_week_year_nr = 201712#(lf)GROUP BY DIS.Location_cd#(lf), DPR.ProductGroup_nm#(lf), DPR.ProductGroup_cd#(lf), DPR.ProductSequence_nm#(lf), DPR.ProductSequence_cd#(lf), DDT.Fiscal_year_nr#(lf), DDT.Fiscal_month_year_nr#(lf), DDT.Fiscal_week_year_nr", CreateNavigationProperties=false])
- LivioLanzo7 years ago
Solution Sage
Hi Anonymous
the query should be something like this:
= Sql.Database("XXXXX", [Query= "SELECT DIS.Location_cd , DPR.ProductGroup_nm , DPR.ProductGroup_cd , DPR.ProductSequence_nm , DPR.ProductSequence_cd , DDT.Fiscal_year_nr , DDT.Fiscal_month_year_nr , DDT.Fiscal_week_year_nr --METRICS , sum(FID.Units) AS Units , sum(FID.Sales) AS Sales , sum(FID.GL_Gross_Profit_FIFO) AS GL_Gross_Profit_FIFO , sum(FID.Standard_Gross_Profit) AS Standard_Gross_Profit -- select count(1) FROM DW.vwFact_InvoiceDetail(NOLOCK) FID INNER JOIN DW.vwDim_Currency DCR ON DCR.CurrencyKey = FID.CurrencyKey INNER JOIN DW.vwDim_InvoiceDetail DID ON DID.InvoiceDate_id = FID.InvoiceDate_id AND DID.InvoiceDetail_id = FID.InvoiceDetail_id INNER JOIN DW.vwDim_Date DDT ON DDT.Date_id = FID.InvoiceDate_id INNER JOIN DW.vwDim_Organization DOR ON DOR.Organization_id = FID.Organization_id INNER JOIN DW.vwDim_Product DPR ON DPR.Product_id = FID.Product_id INNER JOIN DW.vwDim_InvoiceHeader DIH ON DIH.Invoice_id = FID.Invoice_id INNER JOIN DW.vwDim_Customer_OLAP DIB ON DIB.Customer_id = FID.BillCustomer_id AND DIB.Customer_Class_cd != '28' INNER JOIN DW.vwDim_Customer_OLAP DIS ON DIS.Customer_id = FID.ShipCustomer_id WHERE DID.Revenue_GL_no IN ( '40001' ,'40002' ,'40003' ,'40004' ,'40005' ,'40006' ,'40007' ,'40008' ,'40101' ,'40102' ,'40103' ,'40104' ,'40105' ,'40107' ,'40108' ,'50001' ,'50002' ,'50003' ,'50005' ,'50101' ,'50102' ,'50103' ,'50105' ) AND DID.Record_cd IN ('B','C','D','G','N') AND DIH.Preacquisition_flg ='N' AND DOR.Reporting_Division_cd IN ('D01','D99') AND DIS.Customer_Channel_nm ='CORE' AND DDT.Fiscal_year_nr IN (2019) -- AND ddt.Fiscal_week_year_nr = 201712 AND DIS.Location_cd IN (" & TheCommaDelimitedValuesShownInMyFirstReply & ") GROUP BY DIS.Location_cd , DPR.ProductGroup_nm , DPR.ProductGroup_cd , DPR.ProductSequence_nm , DPR.ProductSequence_cd , DDT.Fiscal_year_nr , DDT.Fiscal_month_year_nr , DDT.Fiscal_week_year_nr"])