BigQuery Custom Function (Bitwise function) Question
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
I'm trying to create a custom function that performs some scientific logarithmic math but I'm not understanding the error.
In postgreSQL or most other SQL and programing languages, it's as simple as this:
acc = 10^(val/10)
In BigQuery, when I create a TEMP function and SQL
CREATE TEMP FUNCTION to_acc(x NUMERIC) AS (10^(x/10));
SELECT val, to_acc(10) AS result
I get the following error:
> Bitwise operator ^ requires two integer/BYTES arguments of the same
> type, but saw DOUBLE and NUMERIC; failed to parse CREATE [TEMP]
> FUNCTION statement at [1:108]
So the Bitwise operator only works on integer/bytes....? All of our data are floats...
Is this a limitation of BigQuery or is there a way around this?
google-bigquery
add a comment |
I'm trying to create a custom function that performs some scientific logarithmic math but I'm not understanding the error.
In postgreSQL or most other SQL and programing languages, it's as simple as this:
acc = 10^(val/10)
In BigQuery, when I create a TEMP function and SQL
CREATE TEMP FUNCTION to_acc(x NUMERIC) AS (10^(x/10));
SELECT val, to_acc(10) AS result
I get the following error:
> Bitwise operator ^ requires two integer/BYTES arguments of the same
> type, but saw DOUBLE and NUMERIC; failed to parse CREATE [TEMP]
> FUNCTION statement at [1:108]
So the Bitwise operator only works on integer/bytes....? All of our data are floats...
Is this a limitation of BigQuery or is there a way around this?
google-bigquery
1
cloud.google.com/bigquery/docs/reference/standard-sql/…
– Mikhail Berlyant
Nov 13 '18 at 21:33
add a comment |
I'm trying to create a custom function that performs some scientific logarithmic math but I'm not understanding the error.
In postgreSQL or most other SQL and programing languages, it's as simple as this:
acc = 10^(val/10)
In BigQuery, when I create a TEMP function and SQL
CREATE TEMP FUNCTION to_acc(x NUMERIC) AS (10^(x/10));
SELECT val, to_acc(10) AS result
I get the following error:
> Bitwise operator ^ requires two integer/BYTES arguments of the same
> type, but saw DOUBLE and NUMERIC; failed to parse CREATE [TEMP]
> FUNCTION statement at [1:108]
So the Bitwise operator only works on integer/bytes....? All of our data are floats...
Is this a limitation of BigQuery or is there a way around this?
google-bigquery
I'm trying to create a custom function that performs some scientific logarithmic math but I'm not understanding the error.
In postgreSQL or most other SQL and programing languages, it's as simple as this:
acc = 10^(val/10)
In BigQuery, when I create a TEMP function and SQL
CREATE TEMP FUNCTION to_acc(x NUMERIC) AS (10^(x/10));
SELECT val, to_acc(10) AS result
I get the following error:
> Bitwise operator ^ requires two integer/BYTES arguments of the same
> type, but saw DOUBLE and NUMERIC; failed to parse CREATE [TEMP]
> FUNCTION statement at [1:108]
So the Bitwise operator only works on integer/bytes....? All of our data are floats...
Is this a limitation of BigQuery or is there a way around this?
google-bigquery
google-bigquery
edited Nov 14 '18 at 2:07
vencaslac
1,183420
1,183420
asked Nov 13 '18 at 21:30
user2259963user2259963
6218
6218
1
cloud.google.com/bigquery/docs/reference/standard-sql/…
– Mikhail Berlyant
Nov 13 '18 at 21:33
add a comment |
1
cloud.google.com/bigquery/docs/reference/standard-sql/…
– Mikhail Berlyant
Nov 13 '18 at 21:33
1
1
cloud.google.com/bigquery/docs/reference/standard-sql/…
– Mikhail Berlyant
Nov 13 '18 at 21:33
cloud.google.com/bigquery/docs/reference/standard-sql/…
– Mikhail Berlyant
Nov 13 '18 at 21:33
add a comment |
2 Answers
2
active
oldest
votes
As far as I know, the operator ^ has not the same functionality in BigQuery as it does in PostgreSQL.
While in PostgreSQL it is the power operator, in BigQuery it performs an XOR (and indeed only works on integers and bytes). Based on your use case description I believe you want to calculate the (val/10)th power of 10.
As a way around this you may try the built in standard SQL mathematical functions.
add a comment |
Apparently you want this:
#standardSQL
SELECT POW(10, (x/10))
FROM (SELECT 30.7 x)
With POW(X, Y)
being:
Returns the value of X raised to the power of Y.
Note that in most programming languages ^
means XOR
, not exponentiation. Posgtres instead chose to use a very non traditional #
for XOR
. See some of the historical details:
- https://softwareengineering.stackexchange.com/questions/331388/why-was-the-caret-used-for-xor-instead-of-exponentiation
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53289785%2fbigquery-custom-function-bitwise-function-question%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
As far as I know, the operator ^ has not the same functionality in BigQuery as it does in PostgreSQL.
While in PostgreSQL it is the power operator, in BigQuery it performs an XOR (and indeed only works on integers and bytes). Based on your use case description I believe you want to calculate the (val/10)th power of 10.
As a way around this you may try the built in standard SQL mathematical functions.
add a comment |
As far as I know, the operator ^ has not the same functionality in BigQuery as it does in PostgreSQL.
While in PostgreSQL it is the power operator, in BigQuery it performs an XOR (and indeed only works on integers and bytes). Based on your use case description I believe you want to calculate the (val/10)th power of 10.
As a way around this you may try the built in standard SQL mathematical functions.
add a comment |
As far as I know, the operator ^ has not the same functionality in BigQuery as it does in PostgreSQL.
While in PostgreSQL it is the power operator, in BigQuery it performs an XOR (and indeed only works on integers and bytes). Based on your use case description I believe you want to calculate the (val/10)th power of 10.
As a way around this you may try the built in standard SQL mathematical functions.
As far as I know, the operator ^ has not the same functionality in BigQuery as it does in PostgreSQL.
While in PostgreSQL it is the power operator, in BigQuery it performs an XOR (and indeed only works on integers and bytes). Based on your use case description I believe you want to calculate the (val/10)th power of 10.
As a way around this you may try the built in standard SQL mathematical functions.
answered Nov 13 '18 at 23:13
ch_mikech_mike
75918
75918
add a comment |
add a comment |
Apparently you want this:
#standardSQL
SELECT POW(10, (x/10))
FROM (SELECT 30.7 x)
With POW(X, Y)
being:
Returns the value of X raised to the power of Y.
Note that in most programming languages ^
means XOR
, not exponentiation. Posgtres instead chose to use a very non traditional #
for XOR
. See some of the historical details:
- https://softwareengineering.stackexchange.com/questions/331388/why-was-the-caret-used-for-xor-instead-of-exponentiation
add a comment |
Apparently you want this:
#standardSQL
SELECT POW(10, (x/10))
FROM (SELECT 30.7 x)
With POW(X, Y)
being:
Returns the value of X raised to the power of Y.
Note that in most programming languages ^
means XOR
, not exponentiation. Posgtres instead chose to use a very non traditional #
for XOR
. See some of the historical details:
- https://softwareengineering.stackexchange.com/questions/331388/why-was-the-caret-used-for-xor-instead-of-exponentiation
add a comment |
Apparently you want this:
#standardSQL
SELECT POW(10, (x/10))
FROM (SELECT 30.7 x)
With POW(X, Y)
being:
Returns the value of X raised to the power of Y.
Note that in most programming languages ^
means XOR
, not exponentiation. Posgtres instead chose to use a very non traditional #
for XOR
. See some of the historical details:
- https://softwareengineering.stackexchange.com/questions/331388/why-was-the-caret-used-for-xor-instead-of-exponentiation
Apparently you want this:
#standardSQL
SELECT POW(10, (x/10))
FROM (SELECT 30.7 x)
With POW(X, Y)
being:
Returns the value of X raised to the power of Y.
Note that in most programming languages ^
means XOR
, not exponentiation. Posgtres instead chose to use a very non traditional #
for XOR
. See some of the historical details:
- https://softwareengineering.stackexchange.com/questions/331388/why-was-the-caret-used-for-xor-instead-of-exponentiation
edited Nov 14 '18 at 4:02
answered Nov 14 '18 at 3:56
Felipe HoffaFelipe Hoffa
22.8k253124
22.8k253124
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53289785%2fbigquery-custom-function-bitwise-function-question%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
cloud.google.com/bigquery/docs/reference/standard-sql/…
– Mikhail Berlyant
Nov 13 '18 at 21:33