DAX equivlent for Countif in excel - dax

=COUNTIF(J11:AI11,">0")
column headings are Wk1,..,W26
I want to count the number of cells that are greater than 0
I see lot of example of counting within a column, I need to count instances in a row(s) and create a new column.

what about unpivoting those columns in Power Query, then you can apply COUNTX function?
Check this site: https://support.microsoft.com/en-us/office/unpivot-columns-power-query-0f7bad4b-9ea1-49c1-9d95-f588221c7098
After unpivoting, the solution would be
COUNTX(
FILTER(table,table[Values]>0);table[Values])
Or you can run Pandas script in Power Query and run a count across rows, see:
https://learn.microsoft.com/en-us/power-bi/connect-data/desktop-python-in-query-editor
Thread regarding to row-wise operations in Pandas:
What does axis in pandas mean?

Related

Generate a 3 column table by flattening the given multi column table using google sheets formula

I want to generate a 3 column table by flattening the given multi column table using google sheets formula. The formula should scale to any sized input table.
The sample file is here
https://docs.google.com/spreadsheets/d/1qTvQ58hh1jJEMVWqhQ833jjDBpuudJambmvdJemESPI/edit?usp=sharing
I have tried with
={ARRAYFORMULA(B2:B6),ARRAYFORMULA(D2:D6)}
Disaggregating is not a simple process. You can do it in different ways. Here is one with REDUCE that doesn't involve joining and splitting process. I've moved your input chart some columns to the right so the formula is "scalable" to as many companies you may have:
=QUERY(
REDUCE({"","",""},SEQUENCE(COUNTA(D2:D)),LAMBDA(a,c,{a;
REDUCE({"","",""},SEQUENCE(COUNTA(F1:1)),LAMBDA(d,e,{d;INDEX(D2:D,c),INDEX(F1:1,1,e),INDEX(F2:1000,c,e)}))})),
"Where Col1 is not null",)
You may try:
=hstack(tocol(map(B2:B6,lambda(z,wraprows(z,counta(D1:I1),z))),1,1),tocol(bycol(D1:I1,lambda(z,index(text(SEQUENCE(counta(B2:B6)),"")&z))),1,1),tocol(D2:I6,,1))

PowerBI groupby with filters

My company has tasked with slicing the information on turnover and to create different graphs.
My source data looks like this: Relevant columns are: Voluntary/Involuntary, Termination Reason, Country, Production, and TermDateKey
I am trying to get counts using different filters on the data. I managed to get the basic monthly total using the formula:
Term Month Count = GROUPBY('Turnover Source','Turnover Source'[TermDateKey],"Turnover Total Count", COUNTX(CURRENTGROUP(),'Turnover Source'[TermDateKey]))
This gave me a new sheet with the counts for each month.
Table that shows TermDateKey on Column 1, and Counts on column 2
I am trying to add onto this table by adding counts but using different filters.
For example, I am trying to add another column that gives me the monthly count but filtered for 'Turnover Source'[Voluntary/Involuntary]=="Voluntary". Then another column for 'Turnover Source'[Voluntary/Involuntary]=="Involuntary" and so on. I have not found anywhere that shows me how to do this and when I add in the FILTER function it says that GROUPBY(...) can only work on CURRENTGROUP().
Can some one point me to a resource that will give me the solution I need? I am at a loss, thank you all.
It looks like you may not be aware that you don't have to calculate all possible groupings with DAX formulas.
The very nature of Power BI is that you use a column like "Termination Reason" on an X axis or in the legend of a visual. Any measure that you have created on values of another column, for e.g. a count of all rows, will then automatically be calculated to be grouped by the values in "Termination Reason", giving you a count of each of the values in the column.
You do NOT need DAX functions to calculate the grouping values for each measure for each column value combination.
Here is some simple sample data that has been grouped into dates and colours, one chart showing a count of each colour and one chart showing a sum of the Value column. No DAX was written for that.
If your scenario is different, please explain.

Oracle Reports (6i): Get difference of two items from two different queries (Multi Query Report)

I have an Oracle 6i report with Two Complex Queries (Q1 and Q2) connected by Data Link. The report was developed by some other developer who is not available now. Multiple columns are being displayed in report.
Q1 has a column Total_Issuance and Q2 has a column Total_Consumption. I have to display their difference on report. I am using a formula column to get the difference and then binding a display field to this formula column to show on report.
But since the formula column is outside both the queries, I am getting following errors.
REP-1517: Coloumn 'CF_1' references column 'Total_Issuance', which has incompatible frequency.
REP-1517: Coloumn 'CF_1' references column 'Total_Consumption', which has incompatible frequency.
Just like the formula column is outside both queries, create two additional summary columns (outside of both queries):
cs_tot_iss, which will sum total_issuance
cs_tot_con, which will sum total_consumption
Now modify formula column so that its source are newly created summary columns, e.g. let it
return :cs_tot_iss + :cs_tot_con;
As of paper layout: you don't have to display cs_tot_iss nor cs_tot_con (as you already have those values via total_issuance and total_consumption), just add formula column.
Create a new calculated field to the query that is the detail query (I asume it's Q2).
In this calculated field you can simply use:
return :Total_Issuance - :Total_Consumption;
to calculate the difference.

I have two tablix in ssrs report.I am using the same dataset for first tablix which shows details second shows

There are two tablix in ssrs report. I am using the same dataset for both tablix. First tablix which shows JOB details and $amnt BY Date (5 month worth of data) and second tablix shows records Grouped by Job and total of $amonts from tablix1.
Tablix 2 shows correct $Sum but for some records there are duplicate rows- if Tablix#1 has more than 1 $amnt.
Example Tablix1: ProjectABC - 1/1/2019 =$2 ; 1/5/2019=$5
ProjectHTG -1/1/2019 =$3
Exampl Tablix2: ProjectABC -$7
ProjectABC -$7
ProjectHTG -$3
how do i modify my expression "=sum(Fields!units.Value,"project2")"
to print "ProjectABC -$7" as one line?
Assuming that your field name if JOB for the project, you would add the field along with the dash to your current expression.
You should NOT group by amount if you want to SUM the amount. You are getting a separate line for each different amount for the same JOB. Only JOBs with the same amounts will be SUMmed as one.
=Fields!JOB.Value & " - " & sum(Fields!units.Value)
A few other issues:
Why are you using the Dataset name in your SUM? It sounds like you have a simple table that groups by JOB and Amount. The table is associated to the Dataset that you want to use. You should only use the dataset name in a table when you're referring to a different dataset than the table is using.
Why do you need two datasets if they have the same info? The second table can do the grouping and summing (and already is) from the same dataset as the first table.

DAX Running Running Total Based on None Date Columns

I need to do a running total and filter by two none date fields.
All data is in a single table that is used to house Cycle Times for Part Numbers at each of their respective steps. This table contains a record for each combination of Step and Part. I need to get a running total for Cycle Times on all complete and current steps.
For example in the Table View, if you were to go to CycleHoursComplete at StepNo 40 I need it to = 2.86 or the sum of StepCycleHours with StepNo's <= the StepNo for the given record.
Currently "CycleHoursComplete" = CALCULATE( SUM ( Routing[StepCycleHours] ) , GROUPBY(Routing, Routing[PartNo]), (Routing[StepNo] <= Routing[StepNo] )), and that is not working.
You can easily do running totals with non-date fields as long as you have a numerical identifier to sort by, such as an ID column or in your case, the StepNo column.
You just need to use a combination of FILTER and EARLIER functions. Here's the DAX:
=CALCULATE(SUM([StepCycleHours]),ALL(Cycle),Cycle[StepNo]<=EARLIER(Cycle[StepNo]))
Note my table is called "Cycle"- you would need to replace that with your table name (Routing).
I noticed you tried to use a similar logic as the one I pasted above in the formula, but you forgot to use EARLIER, which is crucial to create row-level context.
Result:

Resources