Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
ABC11
Helper III
Helper III

Row value in column -power bi

Hi All,

I have source data look like this.

VENDOR_NAMELASTNAMEFIRSTNAMEPERSONIDLABORHRSSITEIDLABORLINECOST
ABD LTDADAMSFARAH3000800HOR12000
ABD LTDAHMEDDAVID3001300HOR6000
ABD LTDAHMEDDAVID3001195ALB3900
ABD LTDAKOYBOL2991400HOR10400
ABD LTDAKOYBOL2991500ALB13000
ABD LTDAWGARY5991900HOR13500

 

I need to arrange to this layout in order to calculate more such as %, ratio,....

Basically - I would like to see laborhrs in two different column base on siteid.

VENDOR_NAMELASTNAMEFIRSTNAMEPERSONIDHOR_LABORHRSALB_LABORHRSRATIOHOR_LABORLINECOSTALB_LABORLINECOST  
ABD LTDADAMSFARAH30008000need to caculate %120000  
ABD LTDAHMEDDAVID3001300195need to caculate %60003900  
ABD LTDAKOYBOL2991400500need to caculate %1040013000  
ABD LTDAWGARY59919000 135000  
ABD LTD      

 

   
           
           
1 ACCEPTED SOLUTION

Hi @ABC11 ,

I'm not clear about your final expected result. Do you want to create a report in Power BI? If yes, you can refer the following documentations to get it:

Connect to SQL Server

Refresh data from an on-premises SQL Server database

1. Connect to SQL Server database and put your SQL query into SQL statement textbox under Advanced options tab just as below screenshot...

yingyinr_1-1645066443624.png

yingyinr_0-1645066088205.png

2. Transform the data in Power Query Editor

3. Create visualizations

4.  Publish report to Power BI Service

As for how to get % and ratio, you can get them by creating measures, calculated columns, etc. Before that you may need to provide the corresponding calculation logic so that we can provide you with a suitable solution later.

Percentage= DIVIDE(SUM('Table'[HOR_LABORHRS]),SUM('Table'[ALB_LABORHRS]))

Best Regards

Community Support Team _ Rena
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

View solution in original post

11 REPLIES 11
lbendlin
Super User
Super User

Here is a very crude static-y way of doing this.  Do you need this dynamic for more than the two sample locations?

 

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("jY7BCoMwDIZfZfTsobVWzDEl2yqrFOrYGNL3f40lFkTZDl7+DxK+5F8WhZ4u8UmqUUg4zcwbZgxMq7VmDGuGlDlNK7PSHLQwXYWEr5GqZio2rT9tGXCyjF5G8Gs90ofhU+RsAUTp9v10d8pxq1PfGPun3ZvjjllEVxXYv7FyoJQv", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [VENDOR_NAME = _t, LASTNAME = _t, FIRSTNAME = _t, PERSONID = _t, LABORHRS = _t, SITEID = _t, LABORLINECOST = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"VENDOR_NAME", type text}, {"LASTNAME", type text}, {"FIRSTNAME", type text}, {"PERSONID", Int64.Type}, {"LABORHRS", Int64.Type}, {"SITEID", type text}, {"LABORLINECOST", Int64.Type}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each #table({[SITEID] & "LABORHRS", [SITEID] & "LABORLINECOST"},{{[LABORHRS],[LABORLINECOST]}})),
    #"Expanded Custom" = Table.ExpandTableColumn(#"Added Custom", "Custom", {"HORLABORHRS", "HORLABORLINECOST", "ALBLABORHRS", "ALBLABORLINECOST"}),
    #"Removed Other Columns" = Table.SelectColumns(#"Expanded Custom",{"VENDOR_NAME", "LASTNAME", "FIRSTNAME", "PERSONID", "HORLABORHRS", "HORLABORLINECOST", "ALBLABORHRS", "ALBLABORLINECOST"}),
    #"Grouped Rows" = Table.Group(#"Removed Other Columns", {"VENDOR_NAME", "LASTNAME", "FIRSTNAME", "PERSONID"}, {{"HORLABORHRS", each List.Sum([HORLABORHRS]), type nullable number}, {"HORLABORLINECOST", each List.Sum([HORLABORLINECOST]), type nullable number}, {"ALBLABORHRS", each List.Sum([ALBLABORHRS]), type nullable number}, {"ALBLABORLINECOST", each List.Sum([ALBLABORLINECOST]), type nullable number}})
in
    #"Grouped Rows"
How to use this code: Create a new Blank Query. Click on "Advanced Editor". Replace the code in the window with the code provided here. Click "Done".

Here is a slightly more dynamic version but it still stumbles at the grouping step:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("jY7BCoMwDIZfZfTsobVWzDEl2yqrFOrYGNL3f40lFkTZDl7+DxK+5F8WhZ4u8UmqUUg4zcwbZgxMq7VmDGuGlDlNK7PSHLQwXYWEr5GqZio2rT9tGXCyjF5G8Gs90ofhU+RsAUTp9v10d8pxq1PfGPun3ZvjjllEVxXYv7FyoJQv", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [VENDOR_NAME = _t, LASTNAME = _t, FIRSTNAME = _t, PERSONID = _t, LABORHRS = _t, SITEID = _t, LABORLINECOST = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"VENDOR_NAME", type text}, {"LASTNAME", type text}, {"FIRSTNAME", type text}, {"PERSONID", Int64.Type}, {"LABORHRS", Int64.Type}, {"SITEID", type text}, {"LABORLINECOST", Int64.Type}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each #table({[SITEID] & "LABORHRS", [SITEID] & "LABORLINECOST"},{{[LABORHRS],[LABORLINECOST]}})),
    #"Added Custom1" = Table.AddColumn(#"Added Custom", "Custom.1", each Table.ColumnNames([Custom])),
    CN = List.Distinct(List.Combine(#"Added Custom1"[Custom.1])),
    #"Expanded Custom" = Table.ExpandTableColumn(#"Added Custom1", "Custom", CN),
    #"Removed Other Columns" = Table.SelectColumns(#"Expanded Custom",{"VENDOR_NAME", "LASTNAME", "FIRSTNAME", "PERSONID"} & CN),
    #"Grouped Rows" = Table.Group(#"Removed Other Columns", {"VENDOR_NAME", "LASTNAME", "FIRSTNAME", "PERSONID"}, {{"HORLABORHRS", each List.Sum([HORLABORHRS]), type nullable number}, {"HORLABORLINECOST", each List.Sum([HORLABORLINECOST]), type nullable number}, {"ALBLABORHRS", each List.Sum([ALBLABORHRS]), type nullable number}, {"ALBLABORLINECOST", each List.Sum([ALBLABORLINECOST]), type nullable number}})
in
    #"Grouped Rows"

Hello Ibendlin,

Thanks for your time.

Below is my original SQL query

select  lf.SITEID,lv.vendor_name, EMP.lastname, EMP.FIRSTNAME, EMP.personid, lf.laborhrs,lf.workdate,lf.contractnum,lf.linetype,lf.status,lf.laborlinecost
from bi_hz_etl.lem_facts lf
join bi_hz_etl.lem_vendor lv on (lf.vendor=lv.vendor_id)
LEFT JOIN BI_HZ_ETL.LEM_EMP EMP ON (LF.laborcode = EMP.personid)
where lf.siteid in('HORIZON','ALBIAN') and lf.linetype='L'

When I copy and past your query after this query - then I got error

DataSource.Error: Oracle: ORA-00972: identifier is too long
Details:
DataSourceKind=Oracle
DataSourcePath=rptprd01
Message=ORA-00972: identifier is too long
ErrorCode=-2147467259

What would be my next step. please, guide me.

(I may need to add few more column from my source table in future.)

Thanks,

Hi @ABC11 ,

I'm not clear about your final expected result. Do you want to create a report in Power BI? If yes, you can refer the following documentations to get it:

Connect to SQL Server

Refresh data from an on-premises SQL Server database

1. Connect to SQL Server database and put your SQL query into SQL statement textbox under Advanced options tab just as below screenshot...

yingyinr_1-1645066443624.png

yingyinr_0-1645066088205.png

2. Transform the data in Power Query Editor

3. Create visualizations

4.  Publish report to Power BI Service

As for how to get % and ratio, you can get them by creating measures, calculated columns, etc. Before that you may need to provide the corresponding calculation logic so that we can provide you with a suitable solution later.

Percentage= DIVIDE(SUM('Table'[HOR_LABORHRS]),SUM('Table'[ALB_LABORHRS]))

Best Regards

Community Support Team _ Rena
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

Hello Yingyinr,

Thanks for your time.

There are large amount of data. 

We have different SITEID: currently I am doing only HORIZON and ALBIAN. 

We have different paycode 801,802,814,830,809,826,840,940

AS example: 801 for regular time; 802+814+830 for time and half(1.5); 809+826+840 for double time

Below is my data comeing from Oracle  server.

Contractor#Contractor NamePayCodeSITEIDLaborHrsTotal Cost
10000NOBLE, SKYLER801HORIZON300 $    4,500.00
10000NOBLE, SKYLER802HORIZON500 $    7,500.00
10000NOBLE, SKYLER826HORIZON900 $  13,500.00
10000NOBLE, SKYLER801ALBIAN800 $  12,000.00
10000NOBLE, SKYLER814ALBIAN600 $    9,000.00
10000NOBLE, SKYLER809ALBIAN400 $    6,000.00
300020MACDONALD, JAMES801HORIZON400 $    6,000.00
300020MACDONALD, JAMES801ALBIAN200 $    3,000.00
300020MACDONALD, JAMES802HORIZON150 $    2,250.00
300020MACDONALD, JAMES809HORIZON50 $        750.00
31002OBRIEN, GREG801ALBIAN900 $  13,500.00
31002OBRIEN, GREG802ALBIAN400 $    6,000.00
31002OBRIEN, GREG814ALBIAN200 $    3,000.00
300106NEWMAN, DALTON801HORIZON800 $  12,000.00
300106NEWMAN, DALTON801HORIZON400 $    3,600.00
300106NEWMAN, DALTON802HORIZON200 $    6,000.00
300106NEWMAN, DALTON814HORIZON50 $  10,800.00
300106NEWMAN, DALTON809HORIZON10 $    9,600.00
300106NEWMAN, DALTON826HORIZON50 $    7,200.00
300106NEWMAN, DALTON801ALBIAN200 $    4,800.00
300106NEWMAN, DALTON802ALBIAN12 $    4,800.00
300106NEWMAN, DALTON830ALBIAN12 $    2,400.00
300106NEWMAN, DALTON814ALBIAN10 $    1,800.00
300106NEWMAN, DALTON809ALBIAN24 $        600.00
300106NEWMAN, DALTON826ALBIAN24 $  10,800.00

I would like my output in below

Employee NameContract #'sHorizon Regular HoursHorizon Time and HalfHorizon Double TimeAlbian HoursHorizon Regular CostHorizon Time and Half CostHorizon Double Time CostAlbian CostBase RateNON LEM hours Horizon Total LEM HoursOutside Horizon Non LEM HoursTotal Hours(Albian+Horizon) Horizon Percentage Owed

So basically I would like to have: Total Regular hrs, Total time and half, Total Double time hrs, Total hrs for Horizon site. and Total hrs for Albian site. Also same thing with cost.

I would say calculation column would be prefer because data is very large. 

Thanks again

 

As I mentioned earlier the transforms required are not something you can do dynamically in Power Query.  You will have to do the majority of the work in the upstream system (your Oracle database query).

This here is a Power BI support forum, not an Oracle SQL support forum.  My provided code is M, not SQL.

 

 Since you can run custom SQL queries it would be much easier to do your required transforms directly in SQL.

 

 

Hello Ibendlin,

Yes, I understand this forum is for power bi support.

Sorry for misread Advanced editor vs Advanced query.

When I open advanced editor my SQL query is there. Still Can I do copy and past.?

Thanks,

 

 

 

How to use this code: Create a new Blank Query. Click on "Advanced Editor". Replace the code in the window with the code provided here. Click "Done".

ok. Thanks

Hi @ABC11 ,

Whether your problem has been resolved? If yes, could you please mark the helpful post as Answered? It will help the others in the community find the solution easily if they face the same problem with you. Thank you.

Otherwise, please provide the requried info in my previous post. We will provide you a suitable solution later.

Best Regards

Community Support Team _ Rena
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

Helpful resources

Announcements
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.