Power BI Dataflow - Param1 = Value cannot be null - powerbi

I am trying to create a Power BI dataflow using the Azure Analysis Services connector for the first time. Everything looks good when I'm building the dataflow, but I am unable to refresh at all. When I hit refresh it processes for about a second and returns an error - "Error: An internal error occurred.. Param1 = Value cannot be null."
Has anyone experienced this error or have any ideas on what I could try to get the dataflow to refresh?
Error message
I've tried removing blanks and nulls from the table, connecting to different tables in the same model, and deleting and recreating the dataflow, but nothing has any impact.
Advanced Editor:
let
Source = AnalysisServices.Databases("powerbi://api.powerbi.com/v1.0/myorg/procurement%20analyst%20reports"),
#"Navigation 1" = Source{[Name = "Products and Orders"]}[Data],
#"Navigation 2" = #"Navigation 1"{[Id = "Model"]}[Data],
Model = #"Navigation 2"{[Id = "Model"]}[Data],
#"Added items" = Cube.Transform(Model, {{Cube.AddAndExpandDimensionColumn, "[FactVendorPurchaseOrderItem]", {"[FactVendorPurchaseOrderItem].[ETA].[ETA]", "[FactVendorPurchaseOrderItem].[PurchaseOrderNumber].[PurchaseOrderNumber]"}, {"ETA", "PurchaseOrderNumber"}}}),
#"Filtered rows" = Table.SelectRows(#"Added items", each ([ETA] <> null) and ([PurchaseOrderNumber] <> null and [PurchaseOrderNumber] <> ""))
in
#"Filtered rows"

Related

Create Do While loop in DAX

I need to create something like this using DAX. Preferably highlighted columns as two columns of a table. I have managed to set the preview of the requirement But I'm unable to proceed with it. Hope someone can help me with this.
I have tried with DAX queries, but it won't give me what I need to be done.
This feels more like a Power Query to me. Try pasting this into a blank query in the Advanced Editor:
let
StartingValue = 8,
Deduction = 0.10,
StartDate = #date(2023,2,14),
Times=6,
#"Multiplier" = 1 - Deduction,
Source = Table.FromList({1..Times}, Splitter.SplitByNothing(), type table [Index=Int64.Type], null, ExtraValues.Error),
#"Add Amount" = Table.AddColumn(Source, "Amount", each StartingValue * Number.Power(#"Multiplier",[Index]-1), type number),
#"Add Date" = Table.AddColumn(#"Add Amount", "Date", each Date.AddMonths(StartDate,[Index]-1), type date)
in
#"Add Date"
You can change the 4 input values into Parameters and make this a function in Power Query to easily create new tables.

Why does adding simple SQL query as Power BI data source prevent native query folding?

I have added SQL data source. Then, instead of selecting the table I have typed the following query:
SELECT ID, NAME, AGE
FROM STUDENTS
When I right click on the step then I see that the native query option is disabled. Why does adding simple SQL query as Power BI data source prevent native query folding? Is native query only supported if I select the table via UI and then select the transformations?
You can enable query folding with a native query. There is an excellent article by Chris Webb where he describes all the details.
https://blog.crossjoin.co.uk/2021/02/21/query-folding-on-sql-queries-in-power-query-using-value-nativequery-and-enablefoldingtrue/
EDIT: CODE ADDED
let
Source = Sql.Databases("localhost"),
AdventureWorksDW2017 = Source
{[Name = "AdventureWorksDW2017"]}
[Data],
RunSQL = Value.NativeQuery(
AdventureWorksDW2017,
"SELECT EnglishDayNameOfWeek FROM DimDate",
null,
[EnableFolding = true]
),
#"Filtered Rows" = Table.SelectRows(
RunSQL,
each (
[EnglishDayNameOfWeek] = "Friday"
)
)
in
#"Filtered Rows"

In Advance editor how to handling missing columns / column1 not found error in power BI?

In Power Bi Most of the time I'm getting error column1 not found, if present day there is no data on database query.
How to handle it please suggest me.
For this I'm handling this way., In advance editor alter the result line
using data source
results = if List.IsEmpty(Record. Field(List.First (Source[results]),"data"))
then Record. Field (List.First (Source[results]),"alterData")
else Record. Field((List.First (Source [results]), "data")
user Power Bi static
let
Source = Json.Document (Web.Contents ("https://xxxxxxxxxxxxx",
[Headers=[zzzzz="xxxxxx"]])),
body = Source [body],
content = body[content],
#"Converted to Table" = Table.FromList (content, Splitter.SplitByNothing(),
null,null, ExtraValues.Error}),
Tablel=Table. FromRecords ({
[Columnl = ""]
}),
result= if List.IsEmpty(content) then Tablel else #"Converted to Table"
in
result

Power bi and google analytics. How to set up filters for date before getting full data

How to set up filters for date before getting full data. Right now pbi export all data from day one. Is more than 1.7mil. rows. I reach limit after 1mil and way to use date filter inside pbi is not a option.
So are posible way setdate range parameter (example last 3 month) before export starts?
In adv editor source code:
let
Source = GoogleAnalytics.Accounts(),
#"1*******1" = Source{[Id="1*******1"]}[Data],
#"UA-1*******1-1" = #"1*******1"{[Id="UA-1*******1-1"]}[Data],
#"1*******6" = #"UA-1*******1-1"{[Id="1*******6"]}[Data],
#"Added Items" = Cube.Transform(#"1*******6",
{
{Cube.AddAndExpandDimensionColumn, "ga:eventAction", {"ga:eventAction"}, {"Event Action"}},
{Cube.AddAndExpandDimensionColumn, "ga:eventLabel", {"ga:eventLabel"}, {"Event Label"}},
/*{Cube.AddAndExpandDimensionColumn, "ga:date", {"ga:date"}, {"Date"}},*/
{Cube.AddMeasureColumn, "Unique Events", "ga:uniqueEvents"}
})
in
#"Added Items"
#"1*******1" = Source{[Id="1*******1"]}[Data],
#"UA-1*******1-1" = #"1*******1"{[Id="UA-1*******1-1"]}[Data],
#"1*******6" = #"UA-1*******1-1"{[Id="1*******6"]}[Data],
My guess, after source location we need somehow set date range parameters.
I know that it is an old question and supposed that you solve it.
I think it may be useful for those who google this question.
After step #"Added Items" replace text (in #"Added Items")
(be aware first in SelectRows( should be the name of the previous step)
with next
#"combinedData" = Table.Combine({
Table.SelectRows(#"Added Items", each Text.Contains([Month of Year], "2020"))
Table.SelectRows(#"Added Items", each Text.Contains([Month of Year], "2019"))
})
in
combinedData

Data profiling in Power BI

I want to profile every single data table I have in my Power BI report. By data profile I mean something like this:
Are there ways to make a data profile view in Power BI? DAX measure or calculated columns?
Alternatively, you can also recommend other data quality tools that can handle such tasks since I find it a bit difficult to achieve this result in Power BI.
Now I feel dumb after writing a manual query that did what it turns out Table.Profile does in one shot. However I will mention you can automatically get a profile for every table in your data set by using the #shared reference and filtering down to the tables:
let
Source = #shared,
#"Converted to Table" = Record.ToTable(Source),
#"Added Custom" = Table.AddColumn(#"Converted to Table", "TableCheck", each Type.Is(Value.Type([Value]), type table)),
#"Filtered Rows" = Table.SelectRows(#"Added Custom", each ([TableCheck] = true)),
#"Filtered Rows1" = Table.SelectRows(#"Filtered Rows", each [Name] <> "NAME_OF_THIS_QUERY"),
#"Added Custom1" = Table.AddColumn(#"Filtered Rows1", "Profile", each Table.Profile([Value])),
#"Expanded Profile" = Table.ExpandTableColumn(#"Added Custom1", "Profile", {"Column", "Min", "Max", "Average", "StandardDeviation", "Count", "NullCount", "DistinctCount"}, {"Profile.Column", "Profile.Min", "Profile.Max", "Profile.Average", "Profile.StandardDeviation", "Profile.Count", "Profile.NullCount", "Profile.DistinctCount"})
in
#"Expanded Profile"
And replace "NAME_OF_THIS_QUERY" with whatever you name the query so it doesn't try to profile itself.
Power BI has a built-in data profiler
Open Power BI and refer to the menu ribbon
Click Home
Click Edit Queries
Click View
Select Column Profile to view stats about your data
In the query editor, you can use the Table.Profile function on any table.
You can do multiple ones simultaneously like this:
= Table.Combine({Table.Profile(Table1),Table.Profile(Table2)})
Edit:
To see the profile, create a new Blank Query and define it as = Table.Profile(Table1). If you open the Advanced Editor, the M code looks like this:
let
Source = Table.Profile(Table1)
in
Source