GSA - Determining which queries need higher Click Rank from ASR - ranking

I have been analyzing click data from our Google Search Appliance (GSA) Advanced Search Reports (ASR), and I have run into a bit of an issue. I am trying to generate a .csv report that is ordered by a "priority" that determines which queries would benefit from a manual boost in Click Rank. An example entry in the report looks like this:
| Query | Avg Start Page | Avg Click Rank | Total Clicks | Unique Users | Attention Indicator |
---------------------------------------------------------------------------------------------------
| transfers | 0 | 5.5 | 9| 4| 88.72|
My current Indicator is following this formula:
Priority = ((Unique Users^2)*Avg Click Rank)+(Unique Users/Avg Click Rank)
In my formula, I am trying to lower the priority of cases where 1 user has many clicks (ex. a user clicks every link on a page, skewing results with higher clicks and click rank), and also lower priority of cases where only 1-2 users are searching for a query.
Is there a better way to analyze GSA click data based on a similar Priority metric?

There is no manual boost in click rank (other than faking the clicks). You do have source biasing and also metadata biasing which could feed into that.
Click data should be used to judge the general performance of the system. We generally aren't circling back to circumvent the self learning scorer.

Related

Perform an OR operation on same field from multiple rows SSRS

I am a beginner trying to achieve a simple operation in SSRS using Visual Studio 2019. I have a query which returns a table as follows
ID | Name | Married
1 | Jack | Y
2 | Jack | N
The number of records might vary depending on the number of results. On the report, I want to display only the field 'Married' once. The value of the field will be determined using an OR operation, i.e. if the field 'Married' is 'Y' for any one record, I want to display a 'Y' on the report.
Assuming the Values are either Y or N, you should be able to use something like
=MAX(Fields!Married.Value)
If you report is grouped by, for example, Name then this will give you the MAX value within each group which is probably what you want.
If this does not help, edit your question and show
Your report design
Row Group panel plus details of grouping
A larger sample of data
Expected results from that sample data

Kusto Query, selecting an interval of 5 minutes and calculate the average

I'm fairly new to the Kusto Query language so perhaps this is something very common, but I really can't find my answer. So here goes.
I've enabled performance gathering with Azure Log Analytics on some of our servers and would like to achieve the following:
From the Perf dataset, select all the CPU data from the previous day and display the average CPU utilization per 5 minutes. Now I've figured out the first part, which was really easy to do. However I can't figure out how to do the per 5 minute selection in Kusto. I'm guessing something with summarise? Can anyone share some insights?
Perf
| where Computer == "servername.domain.internal"
| where TimeGenerated > ago(1d)
| where CounterName == "% Processor Time"
| where ObjectName == "Processor Information"
Try adding | summarize avg(CounterValue) by bin(Time Generated, 5m) to your query.
For charting, you can also append a | render timechart to the latter.

Sotring massive data by a parameter in Google Sheets

I have a massive table with data that looks like. Let's call it "Initial data"
place | phone number | prize ($)| promotion | client status | personal manager
Every column has own data in it. And there can be doubles.
What's the goal
To make new sheet list (call it 'Sorted data'), where we have columns
sort Parameter | phone number | number of prize places | client status | personal manager | Average prize | average place
We have such sort parameters:
by number of prize places in all the promotions
by status
by personal manager
by average place
by average prize
So when we choose sort parameter we have sorted data in other columns by this parameter
Any ideas on how to it can be made?
if Sheet1 looks like this:
then Sheet2:
=ARRAYFORMULA({Sheet1!A1:F1; SORT(Sheet1!A2:F, MATCH(B1,
{"place","phone number","price","promotion","client status","personal manager"}, 0),
IF(B2="ascending", 1, 0))})
spreadsheet demo

Calculate Session Duration based on LogFiles in Kibana

I setup an ElasticStack and imported Millions of LogEntries. Each log entry contains a Tiestamp and a sessionID. Each session produces multiple log entries thus I have the following information available
SessionID | Timestamp
1234 | stamp1
1234 | stamp2
2223 | stamp3
1234 | stamp4
5566 | stamp5
5566 | stamp6
2223 | stamp7
Now I would like to calculate the average/minimum/maximum session duration.
Does anyone know how to achieve this?
Thanks in advance
To do exactly what you want isn't going to be simple, I'm not even convinced it's possible with your data in its current form.
I'm also not sure what having the average, minimum and maximum session lengths actually gives you in terms of actionable information - why do you need the max/min/avg session times?
Something that could be easily visualised using you data would be session count against a date histogram. From Kibana, create a line graph visualisation. On the y-axis do a unique count of the session ID, on the x-axis select date histogram and use your timestamp field...
I would have thought knowing the session count over a period of time would give you a better idea for capacity planning than knowing max/min session times - perhaps you have already done this? This assumes each session is regularly logging... If you zoom in too far (i.e. between log events) the graph will look choppy, but it should smooth as you zoom out and there are options available for smoothing.

Ordering photos both by timestamp and manually

Context
I'm working on a small web app to store photos. Photos are ordered according to their timestamp (the date they've been taken), and it's working great. Here's a simplified look at the database:
+--------------+-------------------+
| id | timestamp |
+--------------+-------------------+
| 1 | 1000000003 |
| 2 | 1000000000 |
+--------------+-------------------+
Now I'd like to add the possibility to re-order photos. And I can't find a way of doing that without any downsides.
What I did
I first added a column to the table to save a custom order.
+--------------+-------------------+-------------+
| id | timestamp | order |
+--------------+-------------------+-------------+
| 1 | 1000000003 | 1 |
| 2 | 1000000000 | 2 |
+--------------+-------------------+-------------+
First issue: I believe I can't order photos according to two different criteria, because it'd be hard to know which one has to be given precedence.
So I'm ordering them using the order column, and only this one. When I added the order column, I gave each photo a value so that the current order would remain. I now have photos ordered by order, in the same order as when they were ordered by timestamp.
I can now re-order some photos manually, and the other ones will stay where they belong. The first issue has been solved.
But now, I want to add a new photo.
Second issue: I know when the new photo I'm adding has been taken, but my photos aren't ordered by their timestamp anymore. This photo needs to be correctly ordered, thus it needs a correct order value.
This is the issue: a correct order value.
Here are two ways I could handle a new photo:
Give it an order value greater than others. In the previous table, a new photo would be given order = 3. This is obviously a bad idea, since it doesn't take its timestamp into account. A recent photo would still be the last one displayed.
"Insert" it where it belongs, according to its timestamp. Looking at the same table, if the timestamp of the new photo was 1000000002, the new photo would be given order = 2, and the order of every following photo would be increased by 1.
The second solution looks great, except in one case: if the order of the photo #2 had been manually changed to let's say 50, the new photo would have been given order = 50 even though it belongs among the first photos (according to its timestamp).
What I need
What I need is a way of ordering photos according to their timestamp and to their manually-set order.
Maybe you have a solution to the second issue I highlighted, or maybe you're aware of a whole other way to deal with this. Either way, thank you for your help.
At no point in your question do you mention computers or programming languages. This is OK (actually, it's a good approach, get the problem and solution worked out on paper before coding) and here's an answer which also ignores computers and programming languages.
Put all your photos into a shoebox in the order in which you get them.
Now, take three pieces of paper:
On page 1 write the numbers (one to a line) from 1 to N (the number of photos the box can hold). Whenever you put a photo in the box, write its timestamp on the line corresponding to its order in the box.
On page 2 write the timestamp of photo 1 a few lines down. Write a 1 on the same line. For the next photo, write its timestamp in the appropriate place on the paper, leaving as much space above and below as seems necessary for future photo insertions. Write a 2 on the same line. Continue until you run out of space between lines, when you need to copy all the information onto a new version of the page with more space for insertions. The information on this page is the same as the information on page 1, but with the two numbers on each line swapping positions.
On page 3 write the numbers from 1 to N again. As you collect each photo write its number from page 1 (ie its number in the sequence of all photo numbers) in the correct position for your manually-set ordering. You'll probably have to do a lot of rubbing-out and re-writing on this page as you decide that latecomers ought to be inserted high onto this page.
Now you have:
a store for your photos, the shoebox; you should already have realised that you can't store the photos in more than one order at a time;
three indexes (indices if you prefer); the first is fixed and simply assigns a unique sequence number to each photo; it also tells you the timestamp of each photo in the box;
the second index enables you to find the unique sequence number of a photo given its timestamp, and then find the photo in the shoebox;
the third index allows you to order photos as you wish; the first number on each line is the sequence number in the sorted order, the second number is the photo's unique sequence number from the first index.
All of this is an extremely long-winded way of telling you that, since you can't (either in a shoebox or a computerised data store) keep photos in multiple orders simultaneously, you will have to maintain indices for the orderings you wish to use. Those indices point (that's what an index does) from a number to a location in the shoebox, either directly or indirectly.

Resources