Ich benutze Standard-SQL und möchte dritte Teilzeichenfolge vom Ende extrahieren.Dritte Teilzeichenfolge vom Ende in Google Big Query
Example Input: "Search-site-variable-brand-0-city-none-18053517"
Output: "city"
Ich benutze Standard-SQL und möchte dritte Teilzeichenfolge vom Ende extrahieren.Dritte Teilzeichenfolge vom Ende in Google Big Query
Example Input: "Search-site-variable-brand-0-city-none-18053517"
Output: "city"
Ich wollte nur darauf hinweisen, dass es sinnvoll sein kann, die Logik in eine UDF zu ziehen, wenn Sie diese Transformation auf mehrere Spalten anwenden möchten. Hier ist ein Beispiel dafür, wie das zu tun:
CREATE TEMP FUNCTION SecondSubstringFromEnd(s STRING) AS ((
SELECT arr[SAFE_OFFSET(ARRAY_LENGTH(arr) - 3)]
FROM (
SELECT SPLIT(s, '-') AS arr
)
));
WITH Input AS (
SELECT 'Search-site-variable-brand-0-city-none-18053517' AS str UNION ALL
SELECT 'a-b' UNION ALL
SELECT 'w-x-yyy-z'
)
SELECT
str,
SecondSubstringFromEnd(str) AS second_substring_from_end
FROM Input;
bearbeitet Ansicht konnte nicht gespeichert werden. Keine Unterstützung für CREATE TEMPORARY FUNCTION-Anweisungen in Ansichten – Zzema
Dies könnte den Trick:
WITH data AS(
select "Search-site-variable-brand-0-city-none-18053517" as Input
)
SELECT
CASE WHEN ARRAY_LENGTH(SPLIT(Input, '-')) > 3 THEN SPLIT(Input, '-')[OFFSET(ARRAY_LENGTH(SPLIT(Input, '-')) - 3)] END word
FROM data
Es gibt NULL
falls die Zeichenfolge keinen Splitten, wie leere Saiten haben.
paar Variationen für BigQuery Standard-SQL:
#standardSQL
WITH YourTable AS(
SELECT 'Search-site-variable-brand-0-city-none-18053517' AS Input UNION ALL
SELECT 'Second-substring-from-the-end-in-Google-BigQuery' UNION ALL
SELECT 'bigQuery-assign-a-value-to-table-1-based-on-table-2' UNION ALL
SELECT 'Error-Message-Too-many-sources-provided-15285-Limit-is-10000' UNION ALL
SELECT 'Google-Bigquery-data-import-from-Google-Analytics-360' UNION ALL
SELECT 'Bigquery-Partitioning-data-past-2000-limit'
)
SELECT
Input,
REVERSE(SPLIT(REVERSE(Input), '-')[SAFE_ORDINAL(3)]) AS Output_1,
ARRAY_REVERSE(SPLIT(Input, '-'))[SAFE_ORDINAL(3)] AS Output_2
FROM YourTable
können Sie klären, was Sie durch „zweite Teilkette“ bedeuten ?! "Stadt" sieht für mich wie eine dritte Teilkette aus. Ich denke, dass Sie ziffernbasierte Teilstrings überspringen sollten? nur laut denken –
@MikhailBerLyant danke, ich habe das Thema – Zzema